文字列に変換するときに double 値が丸められないようにするにはどうすればよいですか? 私は両方を試しConvert.ToString
ましToString()
たが、同じ結果でした。
たとえば、私の double は のよう77.987654321
になり、2 つの文字列の変換は に変換され77.98765
ます。値の精度をそのまま維持する必要があります。
デフォルトでは、.ToString()
メソッドDouble
は 15 桁の精度を返します。double 値が内部的に保持する完全な 17 桁が必要な場合は、"G17" 書式指定子をメソッドに渡す必要があります。
String s = value.ToString("G17");
MSDN ドキュメントから引用:
デフォルトでは、戻り値には 15 桁の精度のみが含まれますが、内部では最大 17 桁が維持されます。このインスタンスの値が 15 桁を超える場合、ToString は予想される数値ではなく、PositiveInfinitySymbol または NegativeInfinitySymbol を返します。より高い精度が必要な場合は、常に 17 桁の精度を返す「G17」形式仕様で形式を指定するか、数値がその精度で表現できる場合は 15 桁を返し、数値がその精度でしか表現できない場合は 17 桁を返す「R」を使用して形式を指定します。最高の精度で表現されます。
次のようなものを試してください
myDouble.ToString("R")
ラウンドトリップ ("R") 形式指定子も参照してください。
往復 ("R") 形式指定子は、文字列に変換された数値が解析されて同じ数値に戻されることを保証します。
Jon Skeet のDoubleConverter
クラスにはToExactString()
、double の正確な値を文字列として返すメソッドがあります。
保証はありませんが、ToString("R") を試してください。