gpt4 book ai didi

MySQL浮点舍入错误

转载 作者:行者123 更新时间:2023-11-29 05:00:17 28 4
gpt4 key购买 nike

在内部,右边的浮点表示得到false是怎么回事?

mysql> SELECT 3.1415 + 0.9585 = 4.1, 3.1415E0 + 0.9585E0 = 4.1E0;
+-----------------------+-----------------------------+
| 3.1415 + 0.9585 = 4.1 | 3.1415E0 + 0.9585E0 = 4.1E0 |
+-----------------------+-----------------------------+
| 1 | 0 |
+-----------------------+-----------------------------+

编辑结论:不要将 Float 或 Double 用于精密数学。使用十进制。

最佳答案

首先,您应该永远不要将= 用于 float ,因为您根本无法预测是否会发生舍入错误。始终使用 < 或 >,具体取决于您想要实现的目标。

第二:这两个公式都没有错。在内部,两种变体都在其变量中编码为最接近的二进制表示形式,这与您设置的值略有不同。

小数点前一个数字是标准的,所以后面的数字都是用的。在右侧,您专门定义了逗号出现的位置,因此“浪费”了变量二进制表示末尾的某个部分 - 这会导致舍入错误(在这种特定情况下)。

关于MySQL浮点舍入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1766519/

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