用户636281814 2016-12-10 07:33 采纳率: 100%
浏览 2458
已采纳

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);
        }

为什么输出结果未“不相等”?

  • 写回答

2条回答 默认 最新

  • passer.by 2016-12-10 08:45
    关注

    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 一样
    

    ** 纯手打**

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 5037端口被adb自己占了
  • ¥15 Error in check.length("fill") : 'gpar'成分'fill'的长度不能为零
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误