首頁 >後端開發 >Golang >當使用浮點數值的寬度和精確度時,fmt.Printf 如何處理前導零?

當使用浮點數值的寬度和精確度時,fmt.Printf 如何處理前導零?

Linda Hamilton
Linda Hamilton原創
2024-10-26 02:05:28746瀏覽

  How Does fmt.Printf Handle Leading Zeros When Using Width and Precision for Floating-Point Values?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn