double.ToString()在C#中返回错误的值

时间:2015-09-14 06:59:52

标签: c# .net formatting double

我有双变量,其值为:

double d = 0.000000000000056843418860808015;

当我打印此变量时,其打印错误。

d.ToString();
  

输出:" 5.6843418860808E-14"

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果你想要一个没有指数表示法的输出,你需要格式化你的字符串:

d.toString("F25");

这将为您提供正确的"最多25个小数位数。

0,0000000000000568434188608

修改:已提供完整的格式和转化列表here,您的快照如下所示。

Original value: 1054.32179

F:                     1054.32 
F0:                    1054 
F1:                    1054.3 
F2:                    1054.32 
F3:                    1054.322

答案 1 :(得分:0)

        double d = 0.000000000000056843418860808015;
        var str = d.ToString("G17");
        var value = str.Split('E')[0];
        var zeros = Int32.Parse(str.Split('E')[1]);
        var outputString = "";
        zeros = Math.Abs(zeros);
        var addstring = "0.";
        for (var i = 0; i < zeros - 1; i++)
        {
            addstring += '0';
        }
        value = value.Remove(1, 1);
        value = addstring + value;