SuperQYH 2020-11-04 13:12 采纳率: 50%
浏览 68
已采纳

c语言中a<b*1.1是真还是假。

c语言这串代码为什么会输出ok
#include
int main()
{
int a,b,c;
a=110;
b=100;

while(a<b*1.1)
{
    printf("ok");
    break;
} 
return 0;
}

110<100*1.1应该是错位的啊应该不会进入循环,应该输出为空啊

  • 写回答

2条回答 默认 最新

  • XiaoHuaiShui 2020-11-04 14:51
    关注

    是这样的,b是整型,1.1是浮点型,而100乘1.1是浮点数之间的运算,100和1.1要转换成二进制编码并相乘,这种转换会产生误差,因此浮点内数之间的比较一般很难取到等号;
    以上100乘1.1的结果可能是110.00...01,所以可能会出现110.00...01>110,结果为真进入循环,你也可以设置断点来看此时b乘1.1的值。

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

报告相同问题?

悬赏问题

  • ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
  • ¥15 使用小程序wx.createWebAudioContext()开发节拍器
  • ¥15 关于#爬虫#的问题:请问HMDB代谢物爬虫的那个工具可以提供一下吗
  • ¥15 vue3+electron打包获取本地视频属性,文件夹里面有ffprobe.exe 文件还会报错这是什么原因呢?
  • ¥20 用51单片机控制急停。
  • ¥15 孟德尔随机化结果不一致
  • ¥15 在使用pyecharts时出现问题
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0