浮点数并非真正意义上的实数,只是其在某个范围内的近似。
因此两个浮点数比较大小时,不能简单地使用大于小于号进行比较,应该判断连个浮点数差值的绝对值是否近似为0。
#include <stdio.h>
#include<math.h>
#define EPS 1e-7 //判断浮点数是否位于0的一个很小的邻域内[-EPS,EPS]内
main(){
/*判断一个浮点数是否等于0*/
float a;
scanf("%f",&a);
if(fabs(a) <= EPS) //a=0
...
else if(a > EPS) //a>0
...
else //a<0
...
/*比较两个浮点数大小*/
float a,b;
scanf("%f%f",&a,&b);
if(fabs(a-b) <= EPS) //a=b
...
else if( (a-b) > EPS) //a>b
...
else //a<b
...
}