SELECT ROUND(4.524965325714286, 2);
我觉得应该是4.53
,因为
看上去就像在做
这是对所发生的事情的正确表述吗?
我使用的是MySQL版本5.7.20
发布于 2017-10-31 15:30:32
Round
's的工作是
您有一个算法,但是它与适当的值有多近呢?
SELECT abs(4.524965325714286-4.52) AS "452",
abs(4.524965325714286-4.53) AS "453";
452 | 453
-------------------+-------------------
0.004965325714286 | 0.005034674285714
(1 row)
正如你所看到的,你实际上离得更远了,你做了更多的工作。正因为如此,这就是为什么四舍五入不像你想的那样有效。
您可以创建一个迭代舍入函数来执行您想做的事情,但这是一个不同的问题。
发布于 2017-10-31 15:27:50
当它看到四舍五入时,它只看小数点的下一个位置,看看该转哪个方向。所以,在你的例子中,它看到的是4.524,但它的整数不超过4.53。我从来没有听说过一个系统,它舍入所有的十进制值,直到它达到你的极限。
这样想一想,如果两个小数点是重要的(考虑很多货币),你真的希望第四个或更高的小数点值影响支付金额的计算结果吗?
https://dba.stackexchange.com/questions/189769
复制相似问题