双的ToString - 没有科学记数法[复制](Double ToString - No Sci

2019-07-20 04:44发布

这个问题已经在这里有一个答案:

  • 双到没有科学记数法字符串转换 17回答

我只是碰到了精彩的“功能”是.NET会默认做出来Double.ToString()是否有足够的小数位用科学记数法。

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

有谁知道一个有效的方式来获得这个显示为标准(非科学)符号的字符串?

我已经看到了这个问题 ,但他们都做顶两个答案似乎有种哈克我Double.ToString()然后就重新格式化的结果。

谢谢你的帮助。

编辑:

所需的输出:

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

EDIT2:

什么是与所有的重复和密切票? 我在这个问题明确说,类似的问题没有满意的答复。 本网站上的人们得到这样太耗电高兴。

我的解决方案:

如果它是有用的人:

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

}

注意:这只适用于价值> 1.我还没有找到一种有效的方式,为所有值做到这一点呢。

Answer 1:

参见标准和自定义数字格式字符串 。 我认为你正在寻找".################"

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

这有点hackish的,是的,但它的工作原理,只要你没有超过小数点后很多地方更多。 如果你这样做,你可能想使用StringBuilder打造出了约330 #在您的字符串s( double.Epsilon是E-324的量级)。



文章来源: Double ToString - No Scientific Notation [duplicate]