Oma*_*mar 61 python floating-point string-formatting
我需要输出4个不同的浮点数到两个小数位.
这就是我所拥有的:
print '%.2f' % var1,'kg =','%.2f' % var2,'lb =','%.2f' % var3,'gal =','%.2f' % var4,'l'
Run Code Online (Sandbox Code Playgroud)
这是非常不洁净,看起来很糟糕.有没有办法在'%.2f'中进行任何浮动?
注意:使用Python 2.6.
Fra*_*ger 74
好吧,我至少要把它清理干净如下:
print "%.2f kg = %.2f lb = %.2f gal = %.2f l" % (var1, var2, var3, var4)
Run Code Online (Sandbox Code Playgroud)
小智 26
格式字符串语法.
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)
Run Code Online (Sandbox Code Playgroud)
输出将是:
'3.14, kg=6.28, lb=9.42, gal=12.57'
Run Code Online (Sandbox Code Playgroud)
awe*_*omo 25
如果您只想将值转换为漂亮的字符串,请执行以下操作:
twodecimals = ["%.2f" % v for v in vars]
Run Code Online (Sandbox Code Playgroud)
或者,您也可以在问题中打印出您所拥有的单位:
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'
Run Code Online (Sandbox Code Playgroud)
第二种方式允许您轻松更改分隔符(选项卡,空格,换行符等)以轻松满足您的需求; 分隔符也可以是函数参数,而不是硬编码.
编辑:要使用'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'
Run Code Online (Sandbox Code Playgroud)
Ehs*_*thi 10
使用 f 字符串:
>>> a = 10.1234
>>> f'{a:.2f}'
'10.12'
Run Code Online (Sandbox Code Playgroud)
或者在你的情况下:
print(f'{var1:.2f}, kg = {var1:.2f}, lb = {var2:.2f}, gal = {var3:.2f}, {var4:2f} l'
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您正在寻找可读性,我相信这就是代码:
print '%(kg).2f kg = %(lb).2f lb = %(gal).2f gal = %(l).2f l' % {
'kg': var1,
'lb': var2,
'gal': var3,
'l': var4,
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我刚刚发现了圆函数 - 它在Python 2.7中,不确定2.6.它需要一个浮点数和dps作为参数,因此round(22.55555,2)给出结果22.56.