如果我们打印美元金额,我们通常希望始终显示两个十进制数字。
cost1, cost2 = 123.456890123456789, 357.000
print '{c1:.2f} {c2:.2f}'.format(c1=cost1, c2=cost2)
显示
123.46 357.00
但在其他情况下,我们只想在分数很重要时才打印它们。例如,如果上面的两个数字是音量,我们可能更喜欢显示
123.45 gal. 357 gal.
这可以直接用format
获得吗?
在字符串格式化操作中,Python 文档描述了截断尾随零的%g
格式。
>>> print "%g gallons" % (123.45)
123.45 gallons
>>> print "%g gallons" % (357)
357 gallons
>>> print "%g gallons" % (357.0)
357 gallons
或者使用 Python 3 字符串格式:
>>> print "{:g} gal {:g} gal".format(123.45, 357.0)
123.45 gal 357 gal
g
格式化程序不直观,但您可以通过设置精度获得一些有趣的结果:
>>> print "{:g} gal {:.3g} gal {:.4g} gal {:.5g} gal {:.6g} gal {:.7g} gal".format(*([123.456789] * 6))
123.457 gal 123 gal 123.5 gal 123.46 gal 123.457 gal 123.4568 gal
请注意,在这种情况下,将精度设置为 .5
可实现所需的 2 位小数结果。
当然,您可以先将其与浮点格式化程序结合使用f
以获得您想要的任何内容。