簡體   English   中英

Python,將output中的所有浮點數打印到小數點后2位

[英]Python, print all floats to 2 decimal places in output

我需要 output 4 個不同的浮點數到小數點后兩位。

這就是我所擁有的:

print '%.2f' % var1,'kg =','%.2f' % var2,'lb =','%.2f' % var3,'gal =','%.2f' % var4,'l'

這是非常不干凈,看起來很糟糕。 有沒有辦法讓輸出'%.2f' 中的任何浮點數?

注意:使用 Python 2.6。

好吧,我至少會按如下方式清理它:

print "%.2f kg = %.2f lb = %.2f gal = %.2f l" % (var1, var2, var3, var4)

格式字符串語法。

https://docs.python.org/3/library/string.html#formatstrings

from math import pi
var1, var2, var3, var4 = pi, pi*2, pi*3, pi*4
'{:0.2f}, kg={:0.2f}, lb={:0.2f}, gal={:0.2f}'.format(var1, var2, var3, var4)

輸出將是:

'3.14, kg=6.28, lb=9.42, gal=12.57'

如果您只想將值轉換為漂亮的字符串,請執行以下操作:

twodecimals = ["%.2f" % v for v in vars]

或者,您也可以打印出問題中的單位:

vars = [0, 1, 2, 3] # just some example values
units = ['kg', 'lb', 'gal', 'l']
delimiter = ', ' # or however you want the values separated

print delimiter.join(["%.2f %s" % (v,u) for v,u in zip(vars, units)])
Out[189]: '0.00 kg, 1.00 lb, 2.00 gal, 3.00 l'

第二種方式允許您輕松更改分隔符(制表符、空格、換行符等)以滿足您的需求; 分隔符也可以是函數參數而不是硬編碼。

編輯:要使用您的 'name = value' 語法,只需更改列表理解中的元素操作:

print delimiter.join(["%s = %.2f" % (u,v) for v,u in zip(vars, units)])
Out[190]: 'kg = 0.00, lb = 1.00, gal = 2.00, l = 3.00'

如果您正在尋找可讀性,我相信這是代碼:

print '%(kg).2f kg = %(lb).2f lb = %(gal).2f gal = %(l).2f l' % {
    'kg': var1,
    'lb': var2,
    'gal': var3,
    'l': var4,
}

我剛剛發現了 round 函數 - 它在 Python 2.7 中,不確定 2.6。 它接受一個浮點數和 dps 的數量作為參數,所以 round(22.55555, 2) 給出的結果是 22.56。

如果您想要的是讓打印操作自動將浮點數更改為僅顯示 2 個小數位,請考慮編寫一個函數來替換“打印”。 例如:

def fp(*args):  # fp means 'floating print'
    tmps = []
    for arg in args:
        if type(arg) is float: arg = round(arg, 2)  # transform only floats
        tmps.append(str(arg))
    print(" ".join(tmps)

使用 fp() 代替打印 ...

fp("PI is", 3.14159) ... 而不是 ... print "PI is", 3.14159

使用 f 弦:

>>> a = 10.1234
>>> f'{a:.2f}'
'10.12'

或者你的情況:

print(f'{var1:.2f}, kg = {var1:.2f}, lb = {var2:.2f}, gal = {var3:.2f}, {var4:2f} l'

不是直接按照你想寫的方式,不。 Python 的設計原則之一是“顯式優於隱式”(請參閱import this )。 這意味着最好描述您想要的內容,而不是讓輸出格式依賴於某些全局格式設置或其他內容。 您當然可以以不同的方式格式化代碼以使其看起來更好:

print         '%.2f' % var1, \
      'kg =' ,'%.2f' % var2, \
      'lb =' ,'%.2f' % var3, \
      'gal =','%.2f' % var4, \
      'l'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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