使用非圆整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

上一篇: Rounding error in Python with non

下一篇: Create contact table from JSON data