gpt4 book ai didi

mysql - Mysql 5.5+ 中的舍入错误?

转载 作者:行者123 更新时间:2023-11-29 04:37:20 24 4
gpt4 key购买 nike

我有一个奇怪的舍入问题。

这是设置(MySQL5.5 Percona;在 Mysql 5.7 CE 中相同):

CREATE TABLE `roundingtest` (
`RT_Double` DOUBLE NULL DEFAULT NULL,
`RT_Float` FLOAT NULL DEFAULT NULL,
`RT_Decimal` DECIMAL(10,3) NULL DEFAULT NULL
)
ENGINE=InnoDB;

现在在 3 个字段中分别输入“1.785”。

现在执行这个查询:

SELECT
1.785, ROUND(1.785, 2),
RT_Double, ROUND(RT_Double, 2),
RT_Float, ROUND(RT_Float, 2),
RT_Decimal, ROUND(RT_Decimal, 2)
FROM roundingtest

结果如下: rounding 2

如果四舍五入到小数点后一位: rounding 1

有人请解释这种行为......

只有 DECIMAL 字段是正确的,即使只有 3 位小数。

最佳答案

来自 MySQL Rounding Behaviour :

For approximate-value numbers, the result depends on the C library. On many systems, this means that ROUND() uses the “round to nearest even” rule: A value with any fractional part is rounded to the nearest even integer.

这意味着 float 可以四舍五入到最接近的偶数。 DECIMAL 数字被认为是精确的,因此 0.5 或更多的小数部分会四舍五入。

关于mysql - Mysql 5.5+ 中的舍入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38102896/

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