我正在用Win7上的C#进行计算。C#浮点数的显示和计算精度不同
我得到了一个双精度数的问题。
double x = 3389774.583;
string ss = "x is " + x + " x square is " + x * x + " , 11490571723552.8 - x*x is " + (11490571723552.8 - x * x) + "\n";
Console.WriteLine(ss);
你会发现结果不为0,甚至强硬11490571723552.8是X * X。
我知道这是显示和计算的精度问题。
我可以设置一个阈值,使结果0
是否有其他更好的方法?
感谢
你可以用'decimal',而不是'double'。它的范围较小,但精度要好得多。 – MarcinJuraszek
在这个问题的右下角的“相关”栏中查看关于浮点精度的许多问题。 –
[每个计算机科学家应该知道的关于浮点算术](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –