MySQL SUM返回错误的值

MySQL SUM返回错误的值,mysql,sum,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'); 然后对其进行如下求和: SELECT SUM( value ) FROM `test` 为什么它返回123.44999

如果我在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');
然后对其进行如下求和:

SELECT SUM( value )
FROM `test` 

为什么它返回123.449994948242而不是123.45?

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

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

请参阅此示例:

,因为浮点数存在以下精度“问题”:

  • 机器精度(可存储的有限位数)
  • 表示错误
  • 等等
  • 你试过了吗

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