[英]Displaying the output of a variable to more than 2 decimal places
我試圖將我的加法輸出顯示超過2位小數。
import time
import random
max_number = 1000000.0
random_time = random.randrange(1, max_number-1) / max_number
range_key = int(time.time()) + random_time
range_key
>>> 1347053222.790799
print range_key
>>> 1347053222.79
如何打印完整的號碼? 如果這是一個函數,我怎么能返回完整的數字?
當將float轉換為字符串(打印自動執行此操作)時,python將其限制為僅有12個最高位數加上小數點。
從函數返回數字時,您始終可以獲得完整的精度。
要打印更多數字(如果可用),請使用字符串格式 :
print '%f' % range_key # prints 1347053958.526874
默認為6位數,但您可以指定更高的精度:
print '%.10f' % range_key # prints 1347053958.5268740654
或者,python也提供了一種更新的字符串格式化方法 :
print '{0:.10f}'.format(range_key) # prints 1347053958.5268740654
你已經有了完整的號碼。 在輸出中使用自定義格式說明符。
>>> print '%.15f' % range_key
1347053222.790798902511597
你會發現,如果你硬編碼要打印的數字位數,你有時會得到太少或更糟,但仍然超過浮點精度並在最后得到無意義的數字。 標准浮點數的精度僅為15位左右。 您可以使用以下簡單公式找出小數點右側有多少這些數字:
digits_right = 14 - int(math.log10(value))
使用它您可以創建適當的%f
格式:
fmt = '%%0.%df' % max(0, digits_right)
>>> f = 1/7.
>>> repr(f)
'0.14285714285714285'
>>> str(f)
'0.142857142857'
>>> f
0.14285714285714285
>>> print f
0.142857142857
>>> '%.15f' % f
'0.142857142857143'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.