我总是要知道为什么,而不仅仅是如何,所以我走了:
这是如何运作的:
'{0:01.2f}'.format(5.555) #returns '5.55'
'{0:01.1f}'.format(5.555) #returns '5.5'
'{0:1.2f}'.format(5.555) #returns '5.55' again
'{0:1.1f}'.format(5.555) #returns '5.5' again
当我有额外的零时,为什么这不会通过返回'05 .5'而不仅仅是'5.5'来添加零填充。它似乎没有用。
另外,为什么字符串0:1.1f而不是0:0.1f 等等。这只是一个约定使用小数点前的数字1而不是零,或者是语法?
答案 0 :(得分:6)
因为0字符可以实现零填充,但宽度为1。将宽度设置为2(如'{0:02.1f}'
,您将看到前导0。
编辑 - 实际上,我不确定2是否足够,因为我不知道它在小数点后的位数如何表现。因此,为了安全起见,请将其设为5,然后查看它的作用。
编辑2 - 好的,我刚尝试过。宽度对应于TOTAL宽度,包括所有数字和小数点。所以你会得到这个:
>>> '{0:05.2f}'.format(5.555)
'05.55'
请注意,字符串的总长度现在是5,前导0是因为启用了零填充,并且由于.2
答案 1 :(得分:2)
您应该指定考虑所有字符的宽度,包括小数和点。如果你想05.55这是5个字符,那么:
>>>'{0:05.2f}'.format(5.555)
'05.55'