Double.ToString正在失去double值的精度

时间:2016-10-25 16:15:40

标签: c# .net c#-4.0 precision

我只是想知道为什么以下代码

Convert.ToDouble("866666666.6666666666666666667") 

给出输出:

  

866666666.66666663

Convert.ToString(Convert.ToDouble("866666666.6666666666666666667"))

给出输出:

  

866666666.666667

enter image description here

1 个答案:

答案 0 :(得分:2)

这似乎是字符串格式问题 使用“R”和“G20”,我会看到你在手表中看到的相同 20是总数字数
{0:F20}不正确 - 它只是添加了一堆零 Double.ToString

Double d = Convert.ToDouble("866666666.6666666666666666667");
Debug.WriteLine(d);
Debug.WriteLine(d.ToString("G"));
Debug.WriteLine(d.ToString("G20"));
Debug.WriteLine(d.ToString("R"));
Debug.WriteLine(String.Format("{0:F20}", d));
string s = Convert.ToString(Convert.ToDouble("866666666.6666666666666666667"));
Debug.WriteLine(s);