MySQL舍入行为术语可以在here.中找到。
他们保证rox(FLOAT,DOUBLE)值的舍入将为HALF_EVEN。但是,当尝试相同的方法时,我无法提供文档中所说的内容。对于DOUBLE数据类型,它显然可以用作HALF_UP。我在这里有什么想念的吗?
CREATE TABLE `doubleValues` (
`val` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
select* from doubleValues;
+-------+
| val |
+-------+
| 1.245 |
| 0.555 |
+-------+
select round(val,2) from doubleValues;
+--------------+
| round(val,2) |
+--------------+
| 1.25 |
| 0.56 |
+--------------+
2 rows in set (0.00 sec)
最佳答案
您从文档中将请求链接到:
对于近似值数字,结果取决于C库。在许多系统上,这意味着ROUND()使用“四舍五入到最接近的偶数”规则:将带有小数部分的值四舍五入到最接近的偶数整数。
换句话说:舍入方法是不确定的。
而且:为什么要使用近似类型?您需要数字那么多的数字吗?我很难想象会有这样的数据库。也许是一些天文学数据库。