当尾随小数点为>;=Python 3中的0.5?

当尾随小数点为>;=Python 3中的0.5?,python,python-3.x,algorithm,math,Python,Python 3.x,Algorithm,Math,在Python3中,当尾随小数点>=0.5时,math.ceil()和round()之间的算法差异是什么 比如说, round(9.5) = 10 round(9.67) = 10 math.ceil(9.5) = 10 math.ceil(9.5) = 10 从 […]如果两个倍数相等,则向偶数方向舍入 选择(因此,例如,舍入(0.5)和舍入(-0.5)都是0,并且 圆(1.5)等于2) 然而,math.ceil将始终“取整”。即大于或等于输入的最小整数 此外,对负数执行时,round和ma

在Python3中,当尾随小数点>=0.5时,math.ceil()和round()之间的算法差异是什么

比如说,

round(9.5) = 10
round(9.67) = 10
math.ceil(9.5) = 10
math.ceil(9.5) = 10

[…]如果两个倍数相等,则向偶数方向舍入 选择(因此,例如,舍入(0.5)和舍入(-0.5)都是0,并且 圆(1.5)等于2)

然而,
math.ceil
将始终“取整”。即大于或等于输入的最小整数

此外,对负数执行时,
round
math.ceil
的差异很大

>>> math.ceil(-2.8)
-2
>>> round(-2.8)
-3

尝试输入
8.5
@MarkDickinson为什么会这样?浮点二进制问题?@Skyler:不:在python3中,将一半大小写四舍五入到最接近的偶数是一个明确的选择。这是默认的IEEE 754舍入模式(roundTiesToEven),Python并不是唯一一个默认使用它进行舍入的人。这对于相同的主题来说是一个很好的例子。它解释了这两个函数,并讨论了使用引用舍入事实。