[英]How to print float to n decimal places including trailing 0s?
即使結果有許多尾隨 0,我也需要將浮點數打印或轉換為 15 位小數位字符串,例如:
1.6 變成 1.6000000000000000
我試過 round(6.2,15) 但它返回 6.2000000000000002 添加一個舍入錯誤
我還在網上看到很多人將浮點數放入字符串中,然后手動添加尾隨 0,但這似乎很糟糕......
做這個的最好方式是什么?
您可以使用str.format
方法。 例子:
>>> print('{0:.16f}'.format(1.6))
1.6000000000000001
>>> print('{0:.15f}'.format(1.6))
1.600000000000000
注意1
在第一實施例的端部被舍入誤差; 這是因為十進制數 1.6 的精確表示需要無限數量的二進制數字。 由於浮點數的位數是有限的,因此該數字會四舍五入為附近但不相等的值。
您可以使用“模格式”語法(這也適用於 Python 2.6 和 2.7):
>>> print '%.16f' % 1.6
1.6000000000000001
>>> print '%.15f' % 1.6
1.600000000000000
浮點數缺乏將“1.6”精確表示到那么多小數位的精度。 舍入誤差是真實的。 你的數字實際上不是 1.6。
我想這本質上是把它放在一個字符串中,但這避免了舍入錯誤:
import decimal
def display(x):
digits = 15
temp = str(decimal.Decimal(str(x) + '0' * digits))
return temp[:temp.find('.') + digits + 1]
我們可以使用format()
在小數位后打印數字。 取自http://docs.python.org/tutorial/floatingpoint.html
>>> format(math.pi, '.12g') # give 12 significant digits
'3.14159265359'
>>> format(math.pi, '.2f') # give 2 digits after the point
'3.14'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.