我正在尝试使用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中所述,但我不清楚这些额外数字来自何处?
单个比较不应改变提供的值,对吧?这里没有数学方程可以发挥舍入误差,那么可能出现什么问题呢?
提前致谢!
答案 0 :(得分:0)
看起来你已经将float1和float2声明为float数据类型,这通常需要12个小数点,如10.123456789101使用
Round(10.123456789101,2);
显示2个额外数字,10.12