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()使用“四舍五入到最接近的偶数”规则:将带有小数部分的值四舍五入到最接近的偶数整数。
  


换句话说:舍入方法是不确定的。

而且:为什么要使用近似类型?您需要数字那么多的数字吗?我很难想象会有这样的数据库。也许是一些天文学数据库。

07-24 09:51
查看更多