我想将一堆浮点数放入固定宽度的表中。也就是说,我希望最多使用12个字符。我想要使用至少10个小数(如果可用);但是,如果10位小数使得它占用超过12个字符,则为圆形。我原来的想法是尝试这样的事情
# I only want 12 characters used total
num1 = 0.04154721841
num2 = 10.04154721841
# not what I want
print "{:<12.11g}".format((num1))
# what I want
print "{:<12.10f}".format((num1))
# not what I want
print "{:<12.10f}".format((num2))
# what I want
print "{:<12.11g}".format((num2))
必须有一种方法可以实现这一目标,而无需编写功能来检查每个数字并根据上述条件进行格式化。我错过了什么?
答案 0 :(得分:5)
我不确定这是你在寻找什么,因为它不是完全用格式字符串完成的,但是,当事情变得太长时,你可以使用字符串切片来消除尾随字符:
num1 = 0.04154721841
num2 = 10.04154721841
num3 = 1002.04154721841
print "{0:<12.11g}".format(num1)[:12]
print "{0:<12.11g}".format(num2)[:12]
print "{0:<12.11g}".format(num3)[:12]
输出:
0.0415472184
10.041547218
1002.0415472
除此之外,我会说你应该写一个函数,虽然我不是str.format
的专家,所以我可能会遗漏一些东西。