ホームページ > バックエンド開発 > C++ > C# の二重フォーマットとデバッガーの値が異なるのはなぜですか?

C# の二重フォーマットとデバッガーの値が異なるのはなぜですか?

Susan Sarandon
リリース: 2025-01-04 22:03:45
オリジナル
205 人が閲覧しました

Why Do C# Double Formatting and Debugger Values Differ?

C で Double をフォーマットするときに何が起こるか

C# で出力用に Double をフォーマットする場合、出力がデバッガーに表示される値と異なることに注意することが重要です。その理由は次のとおりです。

根本的な問題

出力精度が書式指定子によって決定される C とは異なり、C# では書式設定を適用する前にすべての double を有効な 10 進数 15 桁に丸めます。この不一致は、C# が要求された精度よりも精度を優先するために発生します。

Visual Studio デバッガーの動作

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 サイトの他の関連記事を参照してください。

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