MySQL SUM返回错误的值

时间:2012-05-24 15:35:35

标签: mysql sum

如果我在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.449996948242而不是123.45?

3 个答案:

答案 0 :(得分:2)

这是因为浮点不准确。改为使用DECIMAL数据类型。

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

请参阅此示例:SQLFiddle

答案 1 :(得分:0)

因为浮点数具有一些精确的“问题”:

  1. 您机器的精度(可以存储的有限位数)
  2. 表示错误
  3. 等......

答案 2 :(得分:0)

你试过吗

SELECT 
      ROUND( SUM(value), 2)
FROM `test`