Iva*_*lov 9 python rounding python-3.x
我是Python的初学者,我有一个问题.
为什么舍入一个数字,如5.5,7.5,(任何).5与奇数整数部分应用round(num)正常工作(规则5/4),但舍入数字像(任何).5与非奇数整数部分由同一函数返回整数部分?(但是如果我们在这个十进制数字上添加一个像0.000000001这样的小数字就能正常工作)
我的意思是下一个:
round(9.5)
Run Code Online (Sandbox Code Playgroud)
返回10,这是正确的.但
round(8.5)
Run Code Online (Sandbox Code Playgroud)
返回8,这是不正确的.和
round(8.5 + 0.0000000000001)
Run Code Online (Sandbox Code Playgroud)
返回9.
为什么它不正确?
我在Windows上使用Python 3.2.2.
Sve*_*ach 19
Python 3.x都有,相比之下到Python 2.x中,使用银行家舍入的round()功能.
这是记录在案的行为:
[I] f两个倍数同样接近,向均匀选择进行舍入(因此,例如,圆形(0.5)和圆形(-0.5)都是0,圆形(1.5)是2).
由于浮点数本质上只是近似值,所以如何处理"精确"半整数并不重要 - 无论如何,在前面的计算中总会出现舍入误差.
编辑:要获得旧的舍入行为,您可以使用
def my_round(x):
return int(x + math.copysign(0.5, x))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2703 次 |
| 最近记录: |