14

如何在没有 10 表示的情况下将 double 转换为字符串 (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   

做 tostring N20 或 format F20 似乎最接近我想要的,但我最终会得到很多尾随零,有没有聪明的方法来避免这种情况?我想尽可能接近双重表示 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 回答