【发布时间】:2014-03-12 22:29:59
【问题描述】:
我在 Win7 上使用 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。它的范围更小,但精度要好得多。 -
在这个问题右下角的“相关”栏中查看许多关于浮点精度的问题。
标签: c# c#-4.0 floating-accuracy floating-point-precision