」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 精度字段實際上如何與“fmt.Printf”中的“%g”一起工作?

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

發佈於2024-11-08
瀏覽:952

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.2345e-06,因為 %.9g 考慮小數點後的所有有效數字。

的影響寬度和精度

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

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

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

給定範例的說明

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

0.0606060606060606
  • 0.3333333333333333
  • 0.05
  • 0.4
  • 0.1818181818181818
  • 0.0606060606060606:精度 9 截斷前導零,得到 0.060606060606:精度 9 截斷前導零,得到 0.06060606060606 寬度。
  • 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 以內。
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3