14

double を 10 の累乗表現なしで string に変換する方法 (E-05)

double value = 0.000099999999833333343;
string text = value.ToString();
Console.WriteLine(text); // 9,99999998333333E-05

文字列のテキストを 0.000099999999833333343 にしたいです (またはそれに近い、私はロケット科学をやっていません:)

次のバリアントを試しました

Console.WriteLine(value.ToString());      // 9,99999998333333E-05
Console.WriteLine(value.ToString("R20")); // 9,9999999833333343E-05
Console.WriteLine(value.ToString("N20")); // 0,00009999999983333330
Console.WriteLine(String.Format("{0:F20}", value)); // 0,00009999999983333330   

N20 を文字列にするか、F20 をフォーマットするのが、私が望むものに最も近いように思えますが、多くの末尾のゼロになってしまいます。これを回避する賢い方法はありますか? double 表現にできるだけ近づけたい 0.000099999999833333343

4

4 に答える 4

14

フォーマット指定子とともにString.Format()を使用します。{0:F20}くらいが欲しいと思います。

string formatted = String.Format("{0:F20}", value);
于 2009-08-23T18:25:16.533 に答える
6

どうですか

Convert.ToDecimal(doubleValue).ToString()
于 2014-08-06T18:14:34.657 に答える
4

必要ありませんstring.Format()。既存のメソッドに正しいフォーマット文字列を入れるだけです。.ToString()「N」のようなものが必要です。

于 2009-08-23T18:27:01.257 に答える
2

string.Format適切な書式指定子とともに使用します。

このブログ投稿には、多くの例があります: http://blogs.msdn.com/kathykam/archive/2006/03/29/564426.aspx

于 2009-08-23T18:25:15.503 に答える