菜鸡爱睡觉
2020-04-14 12:32
采纳率: 66.7%
浏览 270

“C语言中” 为什么第二个输出结果是 1 ,而不是 0 ?

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 封印di恶魔 2020-04-14 14:48
    已采纳

    就算你不减去20014999,直接输出a,也是得到20015000
    这个问题是浮点型的精度丢失问题,float由32位字节构成,1位符号,8位幂指数,23位尾数
    20014999二进制为001100010110011110010111 共24位,所以float的尾数不够表示这个数
    所以只能把多余的部分进位上来,显示一个相近的数

    点赞 打赏 评论
  • qq_1113502097 2020-04-14 17:13

    强制转化需要注意数据的转化的长度,高的向低的转化会失去精度,

    点赞 打赏 评论

相关推荐 更多相似问题