列印具有固定寬度和有效數字的Float64 數字
假設您需要在固定寬度為12 個字元的表格中列印float64 數字以及最大可能的有效數字位數。請考慮以下範例:
fmt.Printf("%12.6g\n", 9.405090880450127e+119) //"9.40509e+119" fmt.Printf("%12.6g\n", 0.1234567890123) //" 0.123457" fmt.Printf("%12.6g\n", 123456789012.0) //" 1.23457e+11"
如您所見,帶有 .6g 格式說明符的預設 fmt.Printf 函數可能會截斷有效數字或使用科學記數法,從而導致精確度損失。有沒有辦法使用標準函式庫函數來實現我們想要的格式?
自訂格式來救援
沒有一個簡單的標準函式庫函數可以完全滿足我們的要求。但是,我們可以開發一個自訂格式化函數,將所需的寬度和最大有效數字納入考量。我們的處理方法如下:
這是一個範例實作Go:
import ( "fmt" ) func format12(x float64) string { if x >= 1e12 { exp := fmt.Sprintf("%.g", x) return fmt.Sprintf("%%12.%dg", 12-len(exp)) } s := fmt.Sprintf("%.0f", x) if len(s) == 12 { return s } return fmt.Sprintf("%%%d.%df", len(s), 12-len(s)-1) }
使用各種float64 值測試此函數會產生以下輸出:
0.0000000000 0.1234567890 1234.5678901 123456789012 1.234568e+12 9405090880.5 9.405091e+19 9.40509e+119
這示範了如何以固定寬度列印float64 數字,並具有最大可能的有效數量使用自訂格式的數字。
以上是如何在 Go 中列印固定寬度和最大有效位數的 Float64 數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!