fmt.Printf 寬度和精確度語法差異
fmt.Printf 與浮點值的寬度和精確度欄位的用法可以是因為文件中的差異而令人困惑。語句:
「對於浮點值,寬度設定欄位的最小寬度,精確度設定小數點後的位數(如果適用),但對於%g/%G 它設定總數位數。」
雖然語法上正確,但它會導致歧義,因為「it」指的是精度而不是寬度。這可能會導致意外的格式化行為。
浮點表示法的精確度
考慮以下浮點值:
123.45 12312.2 1.6069 0.6069 0.0006069
何時使用fmt.Printf("%.4g "),輸出為:
123.5 1.231e+04 1.607 0.6069 0.0006069
觀察精度欄位(.4) 指定總位數,不包括小數點和指數。因此,即使最後兩個值有前導零,它們仍然算作數字並且不會被截斷。
寬度規格
另一方面,寬度欄位(例如,g)指定欄位的最小寬度,包括小數點和指數。如果格式化值超過此寬度,則不會被截斷。但是,除非有四個或更多前導零,否則前導零不會計入寬度。
範例
在您的情況下,格式字串 .9g 指定最小寬度為 10,總位數為 9(不含前導零)。產生的格式為:
0.0606060606060606: 9 digits, 12 width 0.3333333333333333: 9 digits, 11 width 0.05: 3 digits, 10 width (padded with spaces) 0.4: 2 digits, 10 width (padded with spaces) 0.1818181818181818: 9 digits (rounded), 11 width
這展示了精度和寬度欄位之間的相互作用以及前導零如何影響最終格式。
以上是當使用浮點數值的寬度和精確度時,fmt.Printf 如何處理前導零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!