返回信息流float a=0.0f;
for (int i=0;i<INT_MAX;++i)
a+=1.0f;
找出其中的问题,想不明白,运行时也没有错
这是一条镜像帖。来源:北邮人论坛 / cpp / #75175同步于 2013/11/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求教一个面试题
tt07406
2013/11/13镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
上网查了一下,是说32位机器float能精确表示的范围就到(1位符号位,7位阶码)2^24-1,也就是16777215,不知道是不是因为这个问题
这个与float型变量的编码有关(采用IEEE754)以及计算机位数,当值超过16777216循环时候,上面结果还是16777216。建议看看http://blog.csdn.net/hazir/article/details/8268503
C的参考书中有提到float类型数据的表示范围为-3.4*10^38~+3.4*10^38。精确的范围是怎么回事?
【 在 leilove116 的大作中提到: 】
: 上网查了一下,是说32位机器float能精确表示的范围就到(1位符号位,7位阶码)2^24-1,也就是16777215,不知道是不是因为这个问题
明白了http://blog.sina.com.cn/s/blog_6c67e1c90100lj8h.html
【 在 wangcppclei 的大作中提到: 】
: 我刚刚调试了一下 原因是float到了1.67772*10^7的时候后面加1都被舍去 至于原因就不清楚了