Afo*_*tos 4 python python-3.x python-3.4
使用python 3.4.3,
round(5/2) # 2
Run Code Online (Sandbox Code Playgroud)
它不应该返回3吗?
我尝试使用python 2,它给了我正确的结果
round(5.0/2) # 3
Run Code Online (Sandbox Code Playgroud)
如何才能实现正确的浮子舍入?
向偶数舍入是 Python 3 的正确行为。根据 Python 3文档round():
...如果两个倍数同样接近,则向偶数选择进行舍入(因此,例如,round(0.5) 和 round(-0.5) 均为 0,round(1.5) 为 2)
由于 2.5 同样接近 2 和 3,因此向下舍入为 2。
在 Python 2 中,状态的文档round():
...如果两个倍数同样接近,则舍入远离 0(因此,例如,round(0.5) 为 1.0,round(-0.5) 为 -1.0)
由于 2.5 同样接近 2 和 3,因此向上舍入为 3(远离零)。
如果你想控制数字的舍入方式,最好的方法可能是我在 Applesoft BASIC 时代学会的舍入数字的方法:
10 X = 5
15 PRINT "ROUND(" X "/2) = " (INT((X/2)+0.5))
20 X = 4.99
25 PRINT "ROUND(" X "/2) = " (INT((X/2)+0.5))
Run Code Online (Sandbox Code Playgroud)
嗯...做到这一点:
>>> x = 5 / 2
>>> print(x)
2.5
>>> y = int(x + 0.5)
>>> print(y)
3
>>> x = 4.99 / 2
>>> print(x)
2.495
>>> y = int(x + 0.5)
>>> print(y)
2
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1259 次 |
| 最近记录: |