2010-01-06 82 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