Python,输出中所有浮点数保留2位小数

87 投票
8 回答
437445 浏览
提问于 2025-04-15 18:04

我需要把4个不同的小数输出到小数点后两位。

这是我现在的代码:

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

这个代码看起来很乱,不太好看。有办法让输出的小数都变成'%.2f'这种格式吗?

注意:我在用Python 2.6。

8 个回答

28

如果你只是想把数值转换成好看的字符串,可以这样做:

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'

第二种方法让你可以轻松地更改分隔符(比如制表符、空格、换行符等等),这样可以根据你的需要进行调整;这个分隔符也可以作为函数的参数,而不是写死在代码里。

编辑:要使用你提到的'名字 = 值'的语法,只需在列表推导式中更改元素操作:

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'
45

格式字符串语法。

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'
103

好吧,我会至少把它整理成这样:

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

撰写回答