fmt.Printf 如何處理 %g 中的寬度和精確度欄位?
fmt.Printf 在 % 中的寬度和精確度欄位的行為g 可能會令人困惑。要理解它,我們需要澄清文件。
文件中的以下語句尤其重要:
precision sets the number of places after the decimal, if appropriate, except that for %g/%G it sets the total number of digits.
在這個語句中,「it」指的是精確度,而不是寬度。這意味著,寬度指定最小欄位寬度,而精確度指定顯示的總位數,不包括前導零。
例如,當我們使用 fmt.Printf("%.4g") 格式化 123.45 時,結果是123.5。這是因為精確度設定為 4,而 123.5 有 4 位數字(不包括小數點)。
但是,當有前導零時,行為會變得更加複雜。前導零不計為數字,少於 4 個時不會被刪除。例如,當我們使用 fmt.Printf("%.4g") 格式化 0.00012345 時,結果是 0.0001234。這是因為精度設定為 4,而 0.0001234 有 4 位數字(不包括小數點和前導零)。
現在我們了解了精確度的行為方式,我們可以檢查寬度欄位。寬度指定欄位的最小寬度,包括小數位和任何指數。如果格式化值的位數多於指定的寬度,它將超出寬度。但是,精度優先,因此該值必須先滿足精度要求。
在您的範例中,您指定 0.9g,這表示總共 9 位數字(不包括前導零),最小寬度為 10 ,包括小數點和任何指數。讓我們分別檢查每個值:
這解釋了您觀察到的意外寬度。
以上是fmt.Printf 的 %g 格式說明符中的精確度如何與寬度一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!