ホームページ > バックエンド開発 > Golang > 浮動小数点値の幅と精度を使用する場合、fmt.Printf は先頭のゼロをどのように処理しますか?

浮動小数点値の幅と精度を使用する場合、fmt.Printf は先頭のゼロをどのように処理しますか?

Linda Hamilton
リリース: 2024-10-26 02:05:28
オリジナル
769 人が閲覧しました

  How Does fmt.Printf Handle Leading Zeros When Using Width and Precision for Floating-Point Values?

fmt.Printf の幅と精度の構文の不一致

浮動小数点値の幅と精度のフィールドを持つ fmt.Printf の使用法は次のとおりです。ドキュメントに矛盾があるため、混乱を招く可能性があります。ステートメント:

"浮動小数点値の場合、幅はフィールドの最小幅を設定し、精度は必要に応じて小数点以下の桁数を設定します。ただし、%g/%G の場合は合計が設定されます。桁数。"

文法的には正しいですが、「それ」は幅ではなく精度を指すため、あいまいさが生じます。これにより、予期しない書式設定動作が発生する可能性があります。

浮動小数点表記の精度

次の浮動小数点値を考慮してください。

123.45
12312.2
1.6069
0.6069
0.0006069
ログイン後にコピー

場合fmt.Printf("%.4g") を使用すると、出力は次のようになります。

123.5
1.231e+04
1.607
0.6069
0.0006069
ログイン後にコピー

精度フィールド (.4) が、小数点と指数を除いた合計桁数を指定していることに注目してください。したがって、最後の 2 つの値には先行ゼロがあっても、桁としてカウントされ、切り捨てられません。

幅の仕様

一方、幅フィールドは、 (例: g) は、小数点と指数を含むフィールドの最小幅を指定します。フォーマットされた値がこの幅を超える場合、切り捨てられません。ただし、先頭のゼロは、先頭のゼロが 4 つ以上になるまで幅にカウントされません。

この場合、フォーマット文字列 .9g は次のように指定します。最小幅は 10 で、先頭のゼロを除く合計桁数は 9 です。結果の書式設定は次のようになります。

0.0606060606060606: 9 digits, 12 width
0.3333333333333333: 9 digits, 11 width
0.05: 3 digits, 10 width (padded with spaces)
0.4: 2 digits, 10 width (padded with spaces)
0.1818181818181818: 9 digits (rounded), 11 width
ログイン後にコピー

これは、精度フィールドと幅フィールドの間の相互作用と、先頭のゼロが最終的な書式設定にどのように影響するかを示しています。

以上が浮動小数点値の幅と精度を使用する場合、fmt.Printf は先頭のゼロをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート