如何转换的双串没有力量至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   

做tostring N20或格式F20似乎最接近的我想要什么,但是我结束了大量的尾随零,是否有一个聪明的方法来避免这种情况?我想获得尽可能靠近的双代表尽可能0.000099999999833333343

有帮助吗?

解决方案

使用 String.格式()格式的说明.我觉得你想要的{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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top