日前帮朋友看一个程序,一个WHILE循环,退出条件是等于一个双精度数,结果程序未按照预想条件退出,由此联想到了双精度数的精度问题。
由于计算机的计算位数有限,所以双精度数都存在精度损失的问题,因此一般不宜用相等函数进行判断。
对于下面的例子
通过例图可以看出:
0.08+(0.42-0.5)=0,实际上是x+y的指示结果,使用等于0来判断,结果不等于0(x=y?)
而下面(0.08+0.42)-0.5 =0,使用等于0来判断,结果等于0(x=y?2)
将上面不等于0的结果在+1,使用相等来判断,结果却等于1。
由此可见,双精度浮点数的确不适合用相等来判断。