0

MySQL に次のようなテーブルを追加すると:

CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `value` float NOT NULL,
  PRIMARY KEY (`id`)
);

エントリを追加します。

INSERT INTO `test` (`value`) VALUES ('123.45');

次のようにSUMを実行します。

SELECT SUM( value )
FROM `test` 

123.45 ではなく 123.449996948242 を返すのはなぜですか?

4

3 に答える 3

2

これは、浮動小数点の不正確さが原因です。代わりにDECIMALデータ型を使用してください。

CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `value` decimal(8,2) NOT NULL,
  PRIMARY KEY (`id`)
);

この例を参照してください: SQLFiddle

于 2012-05-24T15:38:39.837 に答える
0

やってみました

SELECT 
      ROUND( SUM(value), 2)
FROM `test` 
于 2012-05-24T15:47:52.807 に答える
0

浮動小数点数には、次のような精度の「問題」があるためです。

  1. マシンの精度 (保存できる桁数の制限)
  2. 表現エラー
  3. すぐ...
于 2012-05-24T15:38:55.797 に答える