2010-01-06 84 views
0

我总是要知道为什么,而不仅仅是如何,所以我来到这里:此格式代码如何工作?

这是如何工作的:

'{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 0.5' 加填零,而不是仅仅'5.5'时,我有额外的零。它似乎没有工作。

此外,为什么字符串0:1.1f而不是0:0.1f等等。它只是一个约定,在小数点之前使用数字1而不是零,或者是语法?

+3

该规范是在这里:http://docs.python.org/library/string.html#grammar-token-format_spec – Seth 2010-01-06 18:10:37

回答

6

它是因为0字符启用了零填充,但是您的宽度为1。宽度设置为2(如'{0:02.1f}',你会看到一个领先的0

编辑 - 其实,我不知道,如果2就足够了,因为我不知道它如何与之后的多个数字表现。小数点所以为了安全起见,使它像5,看看那么它就是

编辑2 - 。好了,我只是想它的宽度相当于总宽度,包括所有数字和小数点所以你会得到这个:

>>> '{0:05.2f}'.format(5.555) 
'05.55' 

注意tha t现在字符串的总长度为5,由于零填充处于启用状态,所以前导为0,并且由于.2

2

您应该指定宽度,以考虑所有的字符,包括小数点和点。如果你想05.55这5个字符,所以:

>>>'{0:05.2f}'.format(5.555) 
'05.55' 
+1

谢谢了票对你太。 – orokusaki 2010-01-06 18:37:16