4、浮点数的秘密

1、浮点数在内存中的存储方式:符号位,指数位,尾数
在这里插入图片描述
float 在内存中占4个字节,double 在内存中占8个字节。
浮点数的存储是依照IEEE754标准,指数位用移码表示,尾数用原码表示,且省略1。所以float尾数位为24,double尾数位为64。

对float: 指数为移码 = 011111111+偏移量
对double:指数为移码 = 01111111111+偏移量

例题:实数8.25在内存中的float表示
8.25 →(转化为二进制)1000.01→1.00001×2³
符号位:0
指数位:01111111+3 = 10000010
小数位:00001(省略小数点前面的1)
所以在内存中表示为 0 10000010 00001…0(共32位)
………………………1位…… 8位……23位
也可以写成0x41040000

int类型范围:-231 ——231 -1
float类型范围:-3.4×1038——3.4×1038

问题1:int 和 float都占4个字节的内存,为什么float却比int的范围大得多呢?

原因:表示方法不一样,int是整型,表示的数都可以直接转换成二进制,而float表示的是浮点型,按照IEEE754标准,同样一串数字,float表示的范围更大。

问题2:浮点数表示不精确的原因?

原因:小数在转化为二进制时,无法精确转换,导致尾数存在误差。

总结:
浮点类型和整数类型的内存表示法不一样,浮点类型的内存表示更复杂,可表示的范围也更大,但是表示不精确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值