Python,输出中所有浮点数保留2位小数
我需要把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)