我正在遇到round()
函数的一种奇怪行为:
for i in range(1, 15, 2):
n = i / 2
print(n, "=>", round(n))
这段代码输出:
0.5 => 0
1.5 => 2
2.5 => 2
3.5 => 4
4.5 => 4
5.5 => 6
6.5 => 6
我原本期望浮点数总是向上取整,但实际上它们被舍入到最接近的偶数。
为什么会出现这种行为,有什么方法可以获得正确的结果?
我尝试使用fractions
,但结果仍然相同。
round()
的行为,但如果您始终想向上舍入,可以使用math.ceil()
。 - yurib1.3
四舍五入为1
,因此不能使用ceil()
。 - Delgan5*10**-k
的四舍五入取决于它前面的数字。通过将奇数数字向上舍入,偶数数字向下舍入,理论上你会得到一半时间正误差和一半时间偶误差。当进行许多加法运算时,这些误差可以互相抵消。 - StoryTeller - Unslander Monica