|
其实.....你的问题很正常, 这一切都跟浮点数在内存中的存储方式有关.
学过C/C++的同学应该知道, 浮点数在内存中是以二进制补码的形式存储
打个比方, 32位存储单元, 必须把32个单元都填满0或1
在这种情况下, 浮点数往往都是存储的近似值.
所以浮点数之间的算术运算, 就会出现误差.....
比如上面的运算结束就是这样:
3.915 - 3.914 = 9.9999999999989E-04
3.915 - 3.913 = 2.00000000000022E-03
3.915 - 3.912 = 3.00000000000011E-03
看清楚结果后面的E-04之类的数, 科学计数法还记得不?
其实实际的值是这样:
0.00099999999999989 近似于:0.001
0.00200000000000022 近似于:0.002
0.00300000000000011 近似于:0.003
至于3.915 - 3.911 = 0.004, 记得刚才说的往往吗?
反码\补码之类的知识, 有兴趣可以到网上查查, 这里就知道是这么回事就好了.
回到你要的结果, 你可以变通处理一下, 都乘以1000, 变成整数再运算....
a = 3.915
b = 3.913
运算结果 = (a * 1000) - (b * 1000) / 1000
是不是情况不一样了?
--------打这么多字,累死了, 快采纳吧!!
|

|