>>> a = 0.3135
>>> print("%.3f" % a)
0.314
>>> a = 0.3125
>>> print("%.3f" % a)
0.312
>>>
Run Code Online (Sandbox Code Playgroud)
我期待0.313而不是0.312任何想到为什么会这样,是否有替代方式我可以用来获得0.313?
谢谢
根据IEEE 754标准的Python 3轮,使用round-to-even方法.
如果你想以不同的方式进行舍入,那么只需手动实现:
import math
def my_round(n, ndigits):
part = n * 10 ** ndigits
delta = part - int(part)
# always round "away from 0"
if delta >= 0.5 or -0.5 < delta <= 0:
part = math.ceil(part)
else:
part = math.floor(part)
return part / (10 ** ndigits)
Run Code Online (Sandbox Code Playgroud)
用法示例:
In [12]: my_round(0.3125, 3)
Out[12]: 0.313
Run Code Online (Sandbox Code Playgroud)
注意:在python2中,舍入总是远离零,而在python3中舍入为偶数.(例如,参见round2.7和3.3之间功能文档的差异).
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |