gpt4 book ai didi

mysql - 为什么 FLOAT 列上的 MYSQL SUM() 会生成分数

转载 作者:行者123 更新时间:2023-11-29 10:12:34 24 4
gpt4 key购买 nike

有人可以告诉我为什么在 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 返回该 float :

mysql> SELECT SUM(amount) FROM payments WHERE 1;
+--------------------+
| SUM(amount) |
+--------------------+
| 6.0899999141693115 |
+--------------------+
1 row in set (0.00 sec)

对于一个可能开发比方说......会计软件的人来说,这非常可怕! :/

版本:Mysql 5.5.60

最佳答案

这就是为什么在舍入很重要的任何地方都不使用浮点值。甚至是manual说:

The DECIMAL and NUMERIC types store exact numeric data values. These types are used when it is important to preserve exact precision, for example with monetary data.

关于mysql - 为什么 FLOAT 列上的 MYSQL SUM() 会生成分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50705549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com