如何将double转换为字符串而无需10次表示(E-05)

时间:2009-08-23 18:21:19

标签: c# tostring

如何将double转换为字符串而无需10次表示(E-05)

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

我希望字符串 text 为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似乎最接近我想要的,但我最终会得到很多尾随零,是否有一种聪明的方法可以避免这种情况?我想尽可能接近双重表示0.000099999999833333343

4 个答案:

答案 0 :(得分:12)

String.Format()使用format specifier。我想你想要{0:F20}左右。

string formatted = String.Format("{0:F20}", value);

答案 1 :(得分:5)

您不需要string.Format()。只需将format string放在现有的.ToString()方法中即可。像“N”这样的东西应该做。

答案 2 :(得分:5)

怎么样

Convert.ToDecimal(doubleValue).ToString()

答案 3 :(得分:4)

string.Format与适当的格式说明符一起使用。

这篇博文有很多例子:http://blogs.msdn.com/kathykam/archive/2006/03/29/564426.aspx