Python,输出所有浮点数并保留两位小数

86

我需要输出4个不同的浮点数,保留两位小数。

这是我的代码:

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

这样做很不干净,而且看起来不好。有没有一种方法可以将输出中的任何浮点数转换为“%.2f”?

注意:使用Python 2.6。


3
首先,我只需使用两个引号:“print'%.2f千克=%.2f磅=%.2f加仑=%.2f升'%(var1,var2,var3,var4)” - Johannes Charra
8个回答

100

我至少会将其整理如下:

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

43

27
如果你只是想将值转换为漂亮的字符串,可以按照以下步骤进行:
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'

10

使用f-strings:

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

在您的情况下:

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


8
如果您想要更好的可读性,我认为以下代码可以实现:
print '%(kg).2f kg = %(lb).2f lb = %(gal).2f gal = %(l).2f l' % {
    'kg': var1,
    'lb': var2,
    'gal': var3,
    'l': var4,
}

6

我刚刚发现了round函数 - 它在Python 2.7中,不确定在2.6中是否有。它接受一个浮点数和保留小数位数的参数,因此round(22.55555, 2)将得到结果22.56。


4
round() 函数在 Python 中已经存在很长时间了;它在 Python 2.6 中肯定是可用的。 - Martijn Pieters

4
如果您想让打印操作自动更改浮点数以显示两位小数,请考虑编写一个替换“print”的函数。例如:
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()代替print ...

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


你的闭合括号有小错误。在结尾处添加一个 ')'。 我使用了 return " ".join(tmps),这样我就可以在 clrprint 中使用它了。 - Tim Chaubet

1

不是以你想要的方式直接编写的。Python 的设计原则之一是“显式优于隐式”(参见import this)。这意味着最好描述你想要的内容,而不是让输出格式依赖于某些全局格式设置或其他东西。当然,你可以通过不同的代码格式来使其看起来更美观:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接