无论是float还是double型数据,由于他们在内存的中存储的机制和int型不同,有舍入误差,所以在计算机中,大多数的浮点型都是无法具体的精确表达的。
所以很难用A==B来判断俩个浮点数是不是相等。
当然也不用!=来比较,一般我们都设法准换成>=或者<=某个数来判断的。
正确的判断float数与0值是否相等:
const float EPSINON = 0.000001;
if( x >= -EPSINON && x <= EPSINON)
{
cout<<"x等于0";
}
还要注意的是,对于逻辑运算,需要写成&&的形式,不可写成 -
EPSINON<= x <=EPSINON;
错误的写法:
if(x == 0.0)
{
cout<<"x等于0";
}