用户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条)

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝