题
如何转换的双串没有力量至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
不隶属于 StackOverflow