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/5*7*5,在这之后,resule == 3 可能不一定成立,因为result可能等于2.999999999。但是如果我们仅仅是比较两个简单的double类型,那么完全可以用等号(==),比如 最开始的if表达式可以写成if(a==b),这样没有任何问题的。假如a==b不能比较,那a>b,a<b等也不能比较了,显然不是这样的。
楼主说的有些道理,但double如果无法用“==”的话,就肯定不能用于A>B之类的比较了,但是怎么判断什么是简单的数值呢……
回复删除再者说,如果是复杂的计算就不能用A>B之类的比较了么~