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

如何将double转换为字符串而无需10次表示(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似乎最接近我想要的,但我最终会得到很多尾随零,有一种聪明的方法可以避免这种情况吗? 我想尽可能接近双重表示0.000099999999833333343

使用带有格式说明符的 String.Format() 。 我想你想要{0:F20}左右。

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

你不需要string.Format() 。 只需将正确的格式字符串放在现有的.ToString()方法中。 像“N”这样的东西应该做。

怎么样

 Convert.ToDecimal(doubleValue).ToString() 

使用带有适当格式说明符的string.Format

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