首頁 >後端開發 >Golang >精度字段實際上如何與'fmt.Printf”中的'%g”一起工作?

精度字段實際上如何與'fmt.Printf”中的'%g”一起工作?

Barbara Streisand
Barbara Streisand原創
2024-10-26 01:27:02367瀏覽

How Does the Precision Field Actually Work with `%g` in `fmt.Printf`?

fmt.Printf 對%g 的寬度和精度字段的意外行為

理解不明確的文檔

fmt.Printf 格式化字段的文件對於浮點值,聲明:

「對於浮點值,寬度設定字段的最小寬度
,精度設定小數點後的位數,如果
適當,除了對於%g/% G,它設定了總位數。它實際上指的是“精度”,而不是“寬度”。

%.9g 的真實行為

與 %.9g 應產生總共 9 位有效數字的直覺相反,它實際上只考慮小數點後的數字。

例如,123456.789 將格式化為 123.4e 03,因為 %.9g 有效地截斷任何前導零。

相反,0.0000012345 將格式化為 1.2345 e-06 因為 %.9g 考慮了小數點後的所有有效數字。

寬度和精確度的影響

寬度欄位指定整個格式化字串的最小寬度,包括小數點點和指數(如果有)。

精確度字段,如上所述,設定小數點後的有效位數。

對於 %g,精確度欄位覆蓋寬度欄位。但是,如果格式化字串超過指定寬度,它將超出指定寬度。

給定範例的說明

回想一下,該範例涉及使用以下格式格式化以下浮點值.9克:

0.0606060606060606
  • 0.333333333333333
  • 0.05
  • 0.4
  • 0.181818 1818181818
  • 0.3333333333333333:與第一個範例類似,產生的字串 0.333333333 適合 10 的寬度。
  • 0.05:只有2位元有效數字,0.05用空格填充以滿足最小寬度10。
  • 0.4:與0.05類似,0.4也用空格填充以滿足最小寬度10。
  • 0.1818181818181818:9 的精度導致 0.181818182,尾隨 2 被向上捨入。該字串的寬度在 10 以內。

以上是精度字段實際上如何與'fmt.Printf”中的'%g”一起工作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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