JAVA中浮点类型-float

浮点数的组成结构

符号位S_指数位E_尾数位M

例如,一个float类型的数据占用4个字节共32位,其各个组成部分为:

符号位(S):最高位(31位)为符号位,表示整个浮点数的正负,0为正,1为负

指数位(E):23-30位共8位为指数位,这里指数的底数规定为2。并且指数位是以补码的形式来划分的(最高位为指数位的符号位,0为正,1为负)。另外,标准中还规定了,当指数位8位全0或全1的时候,浮点数为非正规形式,所以指数位真正范围为:-126~127。

尾数位(M):0-22位共23位为尾数位,表示小数部分的尾数,即形式为1.M或0.M,至于什么时候是 1 什么时候是 0,则由指数和尾数共同决定。小数部分最高有效位是1的数被称为正规(规格化)形式。小数部分最高有效位是0的数被称为非正规(非规格化)形式,其他情况是特殊值。

取值范围

float的【取值范围】是由【指数的位数】来决定的,其中,负指数决定了浮点数所能表达的【绝对值最小】的非0数,而正指数决定了浮点数所能表达的【绝对值最大】的数,也即决定了浮点数的取值范围。

S:符号位,E:指数位,M:尾数位float:S1_E8_M23,指数位有8位,指数的取值范围为-27~27-1(即-128127)float的取值范围为-2^128 +2127(1038级别的数),也即-3.40E+38 ~ +3.40E+38.。

精度

float的【精度】是由【尾数的位数】来决定的,float的尾数位有23位。

float:S1_E8_M23,尾数位有23位,2^23=8388608,一共7位,这意味着最多能有7位有效数字,但能保证的为6位,也即float的精度为6~7位有效数字。

总结

浮点数float在内存中是按科学计数法来存储的,取值范围是由指数的位数来决定的,精度是由尾数的位数来决定的。

位数: 32bit

指数位E:1bit(0正1负) 8bit

扩展范围(指数的取值范围) : -27~27-1(-128~127)

最大/小值(取值范围): 2127(1038级别的数)

尾数位M:23bit

尾数取值范围(精度):8388608,7位,精度为6~7位

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值