关于编程中double类型的比较
2010年08月27日 10时25分
相信很多人编程的时候都会像下面这样比较两个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等也不能比较了,显然不是这样的。