有人能告诉我在FLOAT列上执行MySQL SUM()函数的原因会产生奇怪的结果吗?
示例:
CREATE TABLE payments (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
amount FLOAT DEFAULT NULL,
PRIMARY KEY(id)
);
INSERT INTO payments (amount) VALUES (1.3),(1.43),(1.65),(1.71);
当执行SUM()时,期望6.09,MySQL返回浮点数:
mysql> SELECT SUM(amount) FROM payments WHERE 1;
+--------------------+
| SUM(amount) |
+--------------------+
| 6.0899999141693115 |
+--------------------+
1 row in set (0.00 sec)
对于一个可能发展的人来说,这是非常可怕的......会计软件! :/
版本:Mysql 5.5.60
答案 0 :(得分:1)
这就是为什么你没有在四舍五入的重要事项中使用浮点值的原因。即使manual说:
DECIMAL和NUMERIC类型存储精确的数值数据值。当保持精确的精确度很重要时使用这些类型,例如使用货币数据。