翻身の咸鱼 2022-03-10 17:38 采纳率: 100%
浏览 49
已结题

关于#C语言#的问题,如何解决?

C语言问题

代码 #include <stdio.h>
void main
{
double a,b,c;
int d;
b=3.3;
c=1.1;
a=b/c;
d=b/c;
printf("%f,%d",a,d);
if (3.0!=a);
printf("\nreally? 3.0!=a");
}

结果 3.000000,2
really? 3.0!=a

求a和d的值,问为什么结果不一样

  • 写回答

3条回答 默认 最新

  • Code_流苏 C/C++领域优质创作者 2022-03-10 17:55
    关注
    #include<stdio.h>
    void main()
    {
      double a,b,c;   
      int d;
      b=3.3;
      c=1.1;//初始值。 
      a=b/c;//a=3.3/1.1=3.0
      d=b/c;//d=3.3/1.1=3
      printf("%f,%d",a,d);
      //这里要用%lf
      //理论输出值 应为3.000000, 3
      if(3.0!=a)
         printf("\nreally? 3.0!=a");
      return 0;
    }
    
    

    如果输出实际d值为2,
    那么唯一的可能就是浮点数精度问题。
    3.3/1.1得到3.0 实际上被存成了2.99999...
    这样一个接近3的近似值。 然后转为整型时,取整数部分为3。

    希望对题主有所帮助,可以的话,帮忙点个采纳!

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

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项