将double转换为字符串,从而产生意外输出

时间:2011-11-27 05:15:28

标签: asp.net c#-4.0

我有,

double d = 0.005;
d = d/100;
string str = Convert.ToString(d);

output of str = 5E-05

但我需要输出为0.00005 转换为字符串0.00005成为5E-05。

我该如何解决?

3 个答案:

答案 0 :(得分:1)

您需要一个IFormatProvider:

http://www.csharp-examples.net/iformatprovider-numbers/
http://msdn.microsoft.com/en-us/library/7tdhaxxa.aspx

编辑:上面的海报为您提供了更多详细信息。

using System;

namespace test1{
    class MainClass {
        public static void Main (string[] args)     {
            double d = 0.005;
            d = d/100;
            string str = String.Format("{0:0.#####}",d);
            Console.WriteLine ("The double converted to String:  "+str);
        }
    }
}

这应该编译并显示你想要的内容。

它不能比这更清楚

编辑: 有关更具体的示例,请查看此处:`

  

http://www.csharp-examples.net/string-format-double/

`

答案 1 :(得分:1)

您想指定用于将double转换为字符串的格式。 Double.ToString不允许您这样做(它使用科学记数法),因此您应该使用String.Format

这是您的代码,已更新:

string str = String.Format("{0:0.#####}", 0.00005);

实际上,Double.ToString实际上使用了String.Format。有关详情,请参阅此链接:MSDN docs about Double.ToString

有关String.Format的更多示例,请参阅以下链接: Examples of using String.Format

答案 2 :(得分:0)

我找到了解决方案:

 string str = d.ToString("F99").TrimEnd("0".ToCharArray());

工作正常。但究竟这是做什么我不知道。这适用于动态双值。

对你们两个人的回答。