3

我面临python的圆形功能问题。当我通过执行结果以 2 位四舍五入时round(0.715,2),答案是 0.71,同样,当我执行round(0.615,2)结果是 0.61。但是当我执行round(0.515,2)它时它给出 0.52,同样round(0.915,2)的结果是 0.92。

有人可以解释一下吗?

4

2 回答 2

9

这是由于您使用的数字的浮点近似值。只有约 16 个有效十进制数字。如您所见,前两个略低于,后两个略高于

>>> "%.20f"%0.715
'0.71499999999999996891'
>>> "%.20f"%0.615
'0.61499999999999999112'
>>> "%.20f"%0.515
'0.51500000000000001332'
>>> "%.20f"%0.915
'0.91500000000000003553'

如果您需要更好的表现,请考虑使用该decimal模块

于 2013-03-08T03:29:34.843 回答
1

在典型计算机中实现的浮点数并不精确。因此,当您编写 5.15 时,它实际上可能与 5.1499999999 相同(对计算机而言)......或者可能是其他一些细微的变化。当像 Python 这样的编程语言打印这些数字时,它们决定四舍五入到小数位数,所以你认为你得到了一个准确的数字,但你没有。

另请参阅:http ://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html (“每个计算机科学家都应该知道的关于浮点运算的知识”)

于 2013-03-08T03:30:14.420 回答