C语言浮点数“truncation from 'const double' to 'float'”?

 #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