固定幅と有効桁を使用した Float64 数値の出力
テーブル内の float64 数値を 12 文字の固定幅で出力する必要があると想像してください。有効桁数の最大可能数。次の例を考えてみましょう。
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 中国語 Web サイトの他の関連記事を参照してください。