添加两个给出错误结果的双

And*_*oth 2 .net c# floating-point double addition

我正在使用下面的一段代码,并且在一些神秘的情况下,添加的结果并不像它应该的那样:

double _west = 9.482935905456543;
double _off = 0.00000093248155508263153;
double _lon = _west + _off;

// check for the expected result
Debug.Assert(_lon == 9.4829368379380981);
// sometimes i get 9.48293685913086 for _lon (which is wrong)
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中使用了一些本机DLL,我怀疑某些DLL是造成这种"错误计算"的原因,但我需要弄清楚哪一个.任何人都可以给我一个提示如何找出问题的根源吗?

ter*_*tyl 9

double不完全准确,请尝试使用十进制

使用double和float over decimal的优点是性能

  • @TT - 我不知道我是怎么做的但是我完全误解了你的答案 - 我道歉!(-1)删除和+1指出性能问题! (3认同)
  • 也许我的答案有点不清楚但这就是我的意思 (2认同)