C# で出力用に Double をフォーマットする場合、出力がデバッガーに表示される値と異なることに注意することが重要です。その理由は次のとおりです。
出力精度が書式指定子によって決定される C とは異なり、C# では書式設定を適用する前にすべての double を有効な 10 進数 15 桁に丸めます。この不一致は、C# が要求された精度よりも精度を優先するために発生します。
Visual Studio デバッガーは double の内部バイナリ表現を直接表示するため、フォーマットされた出力との不一致が発生します。
C# には正確な 10 進数書式設定のための組み込みソリューションがありませんが、内部バイナリ データから文字列表現を手動で構築できます。あるいは、Jon Skeet の DoubleConverter などのサードパーティ ライブラリを使用することもできます。このライブラリは、正確な 10 進数出力のための ToExactString メソッドを提供します。
DoubleConverter を使用して double を小数点以下 20 桁にフォーマットする:
double i = 10 * 0.69; Console.WriteLine(DoubleConverter.ToExactString(i));
以上がC# の二重フォーマットとデバッガーの値が異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。