关于编程中double类型的比较

相信很多人编程的时候都会像下面这样比较两个double类型吧:

double a=1/2, b=0.5;

if(abs(a-b)<1e-6)
{
    cout<<"a==b";
}

当然这个是可以的,但是为什么不直接用 if(a==b) 这样子呢,因为书上好像说过不能直接用等号比较double类型,因为double在计算过程中有精度损失。

其实是我们理解错了,书上说的是在复杂的计算过程后,比如 double result = 3/7/575,在这之后,resule == 3 可能不一定成立,因为result可能等于2.999999999。但是如果我们仅仅是比较两个简单的double类型,那么完全可以用等号(==),比如 最开始的if表达式可以写成if(a==b),这样没有任何问题的。假如a==b不能比较,那a>b,a<b等也不能比较了,显然不是这样的。

THE END