事实证明:
>>> round(3.5)
4
尽管:
>>> round(2.5)
2
也就是说,当一个数字以 0.5 结尾时,它有时会向上取整(应该如此),有时会向下取整。
为什么会这样?如何强制Python 以某种方式舍入?
这是问题如何在 python 中“正确”舍入?,因为出现了一个我认为相关但对作者来说并不重要的话题。为了不弄乱您的问题,我创建了一个新问题。
事实证明:
>>> round(3.5)
4
尽管:
>>> round(2.5)
2
也就是说,当一个数字以 0.5 结尾时,它有时会向上取整(应该如此),有时会向下取整。
为什么会这样?如何强制Python 以某种方式舍入?
这是问题如何在 python 中“正确”舍入?,因为出现了一个我认为相关但对作者来说并不重要的话题。为了不弄乱您的问题,我创建了一个新问题。
Python 3 使用银行家四舍五入,即银行家四舍五入,包括四舍五入
.5
到最接近的偶数:这是 Python 3 中的新功能,如Python 3.0 中的新增功能所示:
即:
如果您想知道为什么,违反直觉,那么碰巧对于小数,这条规则不成立......
然后内置页面
round()
显示:即:
将 0.5 舍入到下一个整数的想法本身是不正确的。正如您在Python 3.x 舍入行为的答案中所读到的:
然后它表明IEEE 754 中描述了五种可能的舍入类型。
如果您想准确控制应用的舍入,请使用
decimal
带有选项的模块ROUND_HALF_EVEN
,ROUND_HALF_UP
或者ROUND_HALF_DOWN
(还有更多):