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

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

	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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值