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