#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 一样
** 纯手打**
c语言基础知识:两个浮点数不能直接比较是否相等。一般通过函数abs()求绝对值来进行比较。
#include
if(abs(a -b) == abs(c))
{printf("相等\n");
这样就可以了
其中abs(a)函数 :当a>0时直接返回a 当a<0时返回-a