BUG小白BUG 2022-09-16 10:16 采纳率: 88.9%
浏览 27
已结题

不同类型变量相加出现问题

int a=2*3;
float d=10;
float b=(d/3);
float c=0;
c=a+b;
printf("%f",c);

图片
第一行变量类型,全都是int
第二行变量类型全都是float
第三行的v类型是float H类型是int g类型是float
对应的是输出的情况右边图片对应

img


问题是
第一组代码,int 形式,+float形式,可以正常输出
为什么图片中的代码就不可以?会有丢失的情况

  • 写回答

3条回答 默认 最新

  • 於黾 2022-09-16 10:24
    关注

    你应该复习float类型是如何二进制存储的相关知识
    那么你应该知道,float类型的有效数字位数有限,只能支持6-7位有效数字(因为是二进制存储,而我们平时说的有效数字是10进制,除不开,所以在6-7之间)
    而你原始数据两个有效数字都已经到达了8位
    转存为float类型一定会造成有效数字丢失

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

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日
  • 创建了问题 9月16日