我面临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。
有人可以解释一下吗?
我面临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。
有人可以解释一下吗?
这是由于您使用的数字的浮点近似值。只有约 16 个有效十进制数字。如您所见,前两个略低于,后两个略高于
>>> "%.20f"%0.715
'0.71499999999999996891'
>>> "%.20f"%0.615
'0.61499999999999999112'
>>> "%.20f"%0.515
'0.51500000000000001332'
>>> "%.20f"%0.915
'0.91500000000000003553'
如果您需要更好的表现,请考虑使用该decimal
模块
在典型计算机中实现的浮点数并不精确。因此,当您编写 5.15 时,它实际上可能与 5.1499999999 相同(对计算机而言)......或者可能是其他一些细微的变化。当像 Python 这样的编程语言打印这些数字时,它们决定四舍五入到小数位数,所以你认为你得到了一个准确的数字,但你没有。
另请参阅:http ://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html (“每个计算机科学家都应该知道的关于浮点运算的知识”)