gpt4 book ai didi

mysql - 对浮点类型值使用 GREATEST() 会产生不准确的结果

转载 作者:行者123 更新时间:2023-11-29 22:52:40 25 4
gpt4 key购买 nike

我正在试验 mysql,并使用 GRATEST() 函数进行查询来比较两个不同的字段。

我的查询如下所示:

SELECT
id,
float1,
float2,
GREATEST(
IFNULL(float1, 0),
IFNULL(float2, 0)
) AS gtst
FROM `test`

Float1 和 2 是 UNSIGNED FLOAT,默认值为 NULL。服务器版本:5.1.73-1-log,客户端:5.0.8-dev,PHP扩展:mysqli。

运行上面的命令会给我这样的奇怪值:

 | id  | float1 | float2 | gtst             |
|-----|--------|--------|------------------|
| 872 | 348.5 | 348.58 | 348.579986572266 |

我知道 MySQL 处理浮点值的方式很奇怪,正如 this article 中所述。 ,但我不清楚这些额外的数字是从哪里来的?

单次比较不应改变提供的值,对吗?这里没有可能产生舍入误差的数学方程,那么可能出了什么问题呢?

提前致谢!

最佳答案

看起来您已将 float1 和 float2 声明为 float 据类型,通常需要 12 个小数点,例如 10.123456789101 使用

Round(10.123456789101,2); 

显示 2 个额外数字,如 10.12

关于mysql - 对浮点类型值使用 GREATEST() 会产生不准确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28827415/

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