ホームページ > バックエンド開発 > C++ > C# で Double の正確な 10 進数値を正確に出力するにはどうすればよいですか?

C# で Double の正確な 10 進数値を正確に出力するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-05 16:57:41
オリジナル
171 人が閲覧しました

How Can I Accurately Output the Exact Decimal Value of a Double in C#?

C# での Double の書式設定

Double を出力する場合、C# は書式設定を適用する前に自動的に有効数字 15 桁に丸めます。これにより、フォーマットされた出力と double の実際の値の間に不一致が生じる可能性があります。

String.Format の問題:

C# の String.Format メソッドは、次の場合にのみ影響します。フォーマットされた数値の表示。基礎となる double 値の精度は調整されません。その結果、String.Format("{0:F20}", i) は小数点以下 20 桁を表示しますが、double の実際の値は依然として内部的に小数点以下 15 桁に丸められている可能性があります。

例:

次のように考えます。 code:

double i = 10 * 0.69;
Console.WriteLine(String.Format("  {0:F20}", i));
ログイン後にコピー

i の実際の値が 6.90000000000000000000 に近い場合でも、出力は 6.90000000000000000000 になります。 6.89999999999999946709.

解決策:

double の正確な 10 進数値を出力するには、Jon Skeet の DoubleConverter クラスを使用できます。このクラスには、double の正確な 10 進表現を返す ToExactString メソッドがあります。その後、必要に応じて文字列をフォーマットできます。

例:

double i = 10 * 0.69;
Console.WriteLine(DoubleConverter.ToExactString(i));
ログイン後にコピー

これにより、 6.89999999999999946709294817992486059665679931640625 が出力されます。これは、 i の正確な 10 進表現です。

以上がC# で Double の正確な 10 進数値を正確に出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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