[前][次][番号順一覧][スレッド一覧]

mysql:16129

From: "yoku ts." <"yoku ts." <yoku0825@xxxxxxxxxx>>
Date: Tue, 3 Jun 2014 11:10:38 +0900
Subject: [mysql 16129] Re: [mysql 16128] MySQLのfloat型の有効桁数について

こんにちは、yoku0825といいます。

内部的にはCのfloatを使っているので、格納はされているけれど丸められているんだと思います。
(↓5.6ですが)

mysql56> CREATE TABLE t1 (num float not null, num_20 float(20, 16));
Query OK, 0 rows affected (0.05 sec)

mysql56> INSERT INTO t1 VALUES (1.2345678901234567890,
1.2345678901234567890);
Query OK, 1 row affected (0.01 sec)

mysql56> SELECT * FROM t1;
+---------+--------------------+
| num     | num_20             |

+---------+--------------------+
| 1.23457 | 1.2345678806304932 |

+---------+--------------------+
1 row in set (0.00 sec)

mysql56> SELECT num* 10000, num_20* 10000 FROM t1;
+--------------------+------------------------+
| num* 10000         | num_20* 10000          |

+--------------------+------------------------+
| 12345.678806304932 | 12345.6788063049320000 |

+--------------------+------------------------+
1 row in set (0.00 sec)

掛け算で値が狂うのは、浮動小数点数なのでご愛嬌(?)
表示桁数の制御はこのあたりですかね。。

http://dev.mysql.com/doc/refman/5.6/en/floating-point-types.html


yoku0825


2014年6月3日 10:38 ktsa5236@xxxxxxxxxx <ktsa5236@xxxxxxxxxx>:

> いつもお世話になっております。ktsaと申します。

> 表題の件について教えていただきたいのですが、

> MySQLのfloat型は、IEEE754に則っているのでしょうか?

> 7桁ではなく、常に有効数字6桁までしか保存されないように思います。

>

> 環境とテスト内容ですが、

> MySQL5.0.22-community-nt

>

> データベースはInnoDB

>

> CREATE TABLE `testtb` (

>   `A` tinyint(4) NOT NULL default '0',

>   `B_dbl` double default NULL,

>   `C_float` float default NULL,

>   PRIMARY KEY  (`A`)

> ) ENGINE=InnoDB DEFAULT CHARSET=sjis;

>

> Insert into testtb values(11,1.2345678901234567890,1.2345678901234567890);

>

> を実行する。

> コンソール実行画面結果は、

>

> mysql> Insert into testtb

> values(11,1.2345678901234567890,1.2345678901234567890);

> Query OK, 1 row affected

>

> mysql> select * from testtb where A=11;

> +----+------------------+---------+

> | A  | B_dbl            | C_float |

> +----+------------------+---------+

> | 11 | 1.23456789012346 | 1.23457 |

> +----+------------------+---------+

> 1 row in set

> とC_float列は7桁目が丸めまれ常に有効数字が6桁になります。

> 他の値でも試しましたが同様でした。

>

> よろしくお願いいたします。

>


添付ファイル

[前][次][番号順一覧][スレッド一覧]

   @ 16128 2014-06-03 10:38 ["ktsa5236@xxxxxxxxxx] MySQLのfloat型の有効桁数について        
-> @ 16129 2014-06-03 11:10 ┗["yoku ts." <yoku0825] Re: [mysql 16128] MySQLのfloat型の有効桁数について
   @ 16130 2014-06-09 00:38  ┗["ktsa5236@xxxxxxxxxx] Re: [mysql 16129] Re: [mysql 16128] MySQLのfloat型の有効桁数について
   @ 16131 2014-06-09 10:31   ┗["yoku ts." <yoku0825] Re: [mysql 16130] Re: [mysql 16129] Re: [mysql 16128] MySQLのfloat型の有効桁数について
   @ 16132 2014-06-11 11:37    ┗["ktsa5236@xxxxxxxxxx] Re: [mysql 16131] Re: [mysql 16130] Re: [mysql 16129] Re: [mysql 16128] MySQLのfloat型の有効桁数について