Double ToString – 没有科学记数法

我刚刚遇到了一个很棒的“function”,如果有足够的小数位,.NET 默认会使用科学记数法做Double.ToString()

 .005.ToString() // ".005" .00005.ToString() // "5E-05" 

有没有人知道一种有效的方法让它在标准(非科学)符号中显示为字符串?

我已经看到了这个问题 ,但是前两个答案对我来说似乎有些苛刻,因为他们都做了Double.ToString()然后重新格式化结果。

谢谢你的帮助。

编辑:

所需的输出:

 .00005.ToString() == ".00005" 

EDIT2:

所有重复和结束投票是什么? 我在问题中特别说类似的问题没有令人满意的答案。 这个网站上的人太高兴了。

我的解决方案

如果它对任何人都有用:

 ///  /// Converts the double to a standard notation string. ///  /// The double to convert. /// The double as a standard notation string. public static String ToStandardNotationString(this double d) { //Keeps precision of double up to is maximum return d.ToString(".#####################################################################################################################################################################################################################################################################################################################################"); } 

注意:这仅适用于值> 1.我还没有找到一种有效的方法来为所有值执行此操作。

请参阅标准和自定义数字格式字符串 。 我想你正在寻找".################"

 .00005.ToString(".################") // returns ".00005" 

它有点hackish,是的,但它可以工作,只要你没有超过十进制后的那么多地方。 如果这样做,您可能希望使用StringBuilder在字符串中构建大约330 # s( double.Epsilon是E-324)。