4
>>> a = 0.3135
>>> print("%.3f" % a)
0.314
>>> a = 0.3125
>>> print("%.3f" % a)
0.312
>>>
不正確的舍入我期待0.313,而不是0.312 爲什麼是這樣的任何想法,並在那裏我可以用它來獲得0.313另一種方式?蟒蛇浮點數
感謝
>>> a = 0.3135
>>> print("%.3f" % a)
0.314
>>> a = 0.3125
>>> print("%.3f" % a)
0.312
>>>
不正確的舍入我期待0.313,而不是0.312 爲什麼是這樣的任何想法,並在那裏我可以用它來獲得0.313另一種方式?蟒蛇浮點數
感謝
的Python 3輪根據IEEE 754標準,使用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)
用法示例:
In [12]: my_round(0.3125, 3)
Out[12]: 0.313
注:python2四捨五入始終走從零開始,而在python3中則變爲均勻。 (例如,參見在2.7和3.3之間的round
函數的文檔差異)。
嘗試
print '%.3f' % round(.3125,3)
只是'圓(a)'? – alecxe
爲什麼關於這個主題的37億個其他問題不適合你? :-) – paxdiablo
搜索'IEEE 754'和'round to even'。舍入是*不*錯*。它符合標準。 – Bakuriu