簡體   English   中英

將變量的輸出顯示為超過2個小數位

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM