首頁 >後端開發 >Golang >在處理前導零時,fmt.Printf\'s %g 格式如何處理寬度和精確度欄位?

在處理前導零時,fmt.Printf\'s %g 格式如何處理寬度和精確度欄位?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-26 10:35:30386瀏覽

How does fmt.Printf's %g format handle width and precision fields when dealing with leading zeroes?

fmt.Printf 的行為,其中%g 的寬度和精確度欄位

在fmt.Printf 中,浮點的%g 格式值提供了指定寬度和精度的靈活性。但是,組合使用這些欄位時需要考慮一些細微差別。

精確度和總位數

與其他浮點格式(%f 和%e)不同,對於%g,精確度欄位指定小數點後的總位數(不含前導零和指數)。例如,%.4g 確保總共有四位數字,無論是否有任何前導零。

前導零和最小寬度

為了精度起見,前導零被計為數字但在計算最小寬度時​​被排除在外。最小寬度決定整體欄位寬度,並使用 width 欄位(例如 g)進行設定。

.9g 的行為方式

在您的具體情況下,.9g 指定總共九位數(不包括前導零)和10 個字元的最小寬度:

  • 對於0.0606060606060606,沒有前導零的九位數字給出0.0606060606,這已經滿足最小寬度10。
  • 對於 0.3333333333333333,沒有前導零的九位數字給出 0.333333333,也滿足最小寬度。
  • 對於 0.05,沒有前導零的九位數字給出 0.05,這不符合要求最小寬度為 10,因此會填充以填充剩餘的六個字元。
  • 同樣適用於 0.4。
  • 對於 0.1818181818181818,不帶前導零的九位數字給出 0.181818182(四捨五入) ,它再次滿足最小寬度。

因此,總而言之,輸入值的不同輸出是由於精度(確定顯示位數)和最小寬度(確保一定的字段寬度)。

以上是在處理前導零時,fmt.Printf\'s %g 格式如何處理寬度和精確度欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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