这种格式代码如何工作?

oro*_*aki 0 python string

我总是要知道为什么,而不仅仅是如何,所以我走了:

这是如何运作的:

'{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
Run Code Online (Sandbox Code Playgroud)

当我有额外的零时,为什么这不会通过返回'05 .5'而不仅仅是'5.5'来添加零填充.它似乎没有用.

另外,为什么字符串0:1.1f而不是0:0.1f等.它只是一个约定使用十进制之前的数字而不是零,或者是语法?

dan*_*ben 6

因为0字符可以实现零填充,但宽度为1.将宽度设置为2(就像'{0:02.1f}',您将看到前导0.

编辑 - 实际上,我不确定2是否足够,因为我不知道小数点后的数字是如何表现的.所以为了安全起见,请将其设为5,然后查看它的作用.

编辑2 - 好吧,我刚尝试过.宽度对应于TOTAL宽度,包括所有数字和小数点.所以你会得到这个:

>>> '{0:05.2f}'.format(5.555)
'05.55'
Run Code Online (Sandbox Code Playgroud)

请注意,字符串的总长度现在是5,前导0是因为启用了零填充,并且它在小数点后截断为2位数,因为 .2