#include<stdio.h>
int main()
{
float a; float b; float c;
a=4.2; b=3.1; c=1.1;
if ((a-b)==c) {
printf("相等 ");
} else {
printf("不相等 ");
}
printf("%f\n",a);
printf("%f\n",b);
printf("%f\n",a-b);
printf("%f",c);
}
為什麼輸出結果未“不相等”?
C或C++ 裡對float 和double進行比較時不能直接==比較,浮點數有精度查,大概是0.00001所以一般是這樣
C 語言內:
a與零比較是否相等
typedef 0.000001 EPS;
if ( a > -EPS && a < EPS )
a == 0;
a與b 比較是否相等
typedef 0.000001 EPS;
float tmp x = a-b;
if ( x > -EPS && x < EPS )
a == b;
C++內
const float EPS = 0,000001;
其它與C語言內一樣當然也可以使用C語言方法,但C語言內不支持const
double 一樣
** 純手打**