【发布时间】:2015-10-08 15:11:43
【问题描述】:
我正面临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() -
@yurib 我希望将
1.3向下舍入为1,所以我不能使用ceil()。 -
自从我学习错误分析以来已经过去了很多天。但是,如果我没记错的话,
5*10**-k的四舍五入取决于它前面的数字。通过向上取整偶数位数和向下取整偶数位数,一半时间得到正错误,一半时间得到偶数错误(理论上)。当您执行许多添加时,这些错误可以相互抵消
标签: python python-3.x floating-point rounding precision