首先解释一下原因:
归根结底是计算机浮点计算的问题:二进制
1.01 表示为:
0   0111111 1111    0000 00101000 11110101 11000010 10001111 01011100 00101001  
2.01 表示为;
0   1000000 0000    0000 00010100 01111010 11100001 01000111 10101110 000101002.01+1.01 在编程语言中的计算结果 表示为:
0   1000000 0000    1000 00101000 11110101 11000010 10001111 01011100 00101000 
好了,我们可以比较一下3.02和计算结果,果然有所不同,最后一个bit不同,所以
2.01+1.01变成了3.0199999999999995
因为浮点数在计算机内的存储存在偏差,导致运算时,与实际期望的结果不同