20

文字列に変換するときに double 値が丸められないようにするにはどうすればよいですか? 私は両方を試しConvert.ToStringましToString()たが、同じ結果でした。

たとえば、私の double は のよう77.987654321になり、2 つの文字列の変換は に変換され77.98765ます。値の精度をそのまま維持する必要があります。

4

6 に答える 6

25

デフォルトでは、.ToString()メソッドDoubleは 15 桁の精度を返します。double 値が内部的に保持する完全な 17 桁が必要な場合は、"G17" 書式指定子をメソッドに渡す必要があります。

String s = value.ToString("G17");

MSDN ドキュメントから引用:

デフォルトでは、戻り値には 15 桁の精度のみが含まれますが、内部では最大 17 桁が維持されます。このインスタンスの値が 15 桁を超える場合、ToString は予想される数値ではなく、PositiveInfinitySymbol または NegativeInfinitySymbol を返します。より高い精度が必要な場合は、常に 17 桁の精度を返す「G17」形式仕様で形式を指定するか、数値がその精度で表現できる場合は 15 桁を返し、数値がその精度でしか表現できない場合は 17 桁を返す「R」を使用して形式を指定します。最高の精度で表現されます。

于 2010-01-20T21:32:45.820 に答える
15

次のようなものを試してください

myDouble.ToString("R")

ラウンドトリップ ("R") 形式指定子も参照してください。

往復 ("R") 形式指定子は、文字列に変換された数値が解析されて同じ数値に戻されることを保証します。

于 2010-01-20T21:31:07.153 に答える
5

Jon Skeet のDoubleConverterクラスにはToExactString()、double の正確な値を文字列として返すメソッドがあります。

http://www.yoda.arachsys.com/csharp/DoubleConverter.cs

于 2010-01-20T21:30:47.687 に答える
0

保証はありませんが、ToString("R") を試してください。

于 2010-01-20T21:31:44.343 に答える