我正在使用以下代码,但在某些神秘的情况下,加法的结果并不如预期:
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)
我在我的应用程序中使用了一些本地DLL,我怀疑其中某个DLL导致了这种“误差”,但我需要找出是哪一个。 有人能给我一个提示如何找到问题的根源吗?
0.1 * 0.1 = 0.010000000000000002
,0.1 + 0.2 = 0.30000000000000004
,0.1 * 0.2 = 0.020000000000000004
,0.1 - 0.3 = -0.19999999999999998
,0.2 + 0.1 = 0.30000000000000004
,0.2 * 0.1 = 0.020000000000000004
,0.2 * 0.2 = 0.04000000000000001
,0.2 - 0.3 = -0.09999999999999998
,0.3 - 0.1 = 0.19999999999999998
,0.3 - 0.2 = 0.09999999999999998
:) - Robert Synoradzki