您的位置:首页 > 编程语言 > C语言/C++

有趣的单精度浮点数(float)

2015-11-26 19:55 232 查看

缘起:一个执行不完的循环

float	f;

for(f=0;f<1E8;f+=1){
//printf("%f ",f);
}
printf("OK\n");


上面这个循环总也无法执行完毕,究竟是为什么呢?

原因:(白色文字,请选中查看)

浮点数无法精确表示所有的整数。当f达到16777216之后,f+1的16777217无法被表示出来,经过舍入之后仍为16777216。

float能够表示的连续整数范围

-16777216到+16777216(0xFF000000-0x1000000),即±2^24

float能够表示的连续偶数范围

-33554432到+33554432(0xFE000000-0x2000000),即±2^25

float的表示精度

正常情况下不超过2/166777216,大概是800万分之一。
(注:超过表示范围的极大值或非常接近于0的极小值精度除外)
按照IEEE754标准,单精度浮点数使用32bit来存储,其中符号位1bit,底数23bit,阶码(移码)8bit
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息