使用非圆整Python中的错误
我是Python的初学者,我有一个问题。
为什么要舍入一个数字,如5.5,7.5,(任何).5与奇数整数部分申请round(num)
正常工作(规则5/4),但舍入数字像(任何).5与非奇数整数部分相同的函数只返回一个整数部分? (但是,如果我们添加一个像0.000000001这样的小数字就可以正常工作)
我的意思是下一个:
round(9.5)
返回10,它是正确的。 但
round(8.5)
返回8,并且不正确。 和
round(8.5 + 0.0000000000001)
返回9。
为什么它工作不正确?
我在Windows上使用Python 3.2.2。
与Python 2.x相比,Python 3.x使用Banker对round()
函数的舍入。
这是记录的行为:
[I] f两个倍数同样接近,对偶数选择舍入(例如,所以round(0.5)和round(-0.5)都是0,round(1.5)是2)。
由于浮点数的本质只是近似值,因此,如何处理“确切”的半整数无关紧要 - 无论如何,在前面的计算中总会有舍入误差。
编辑 :要获得旧的舍入行为,可以使用
def my_round(x):
return int(x + math.copysign(0.5, x))
链接地址: http://www.djcxy.com/p/48409.html