在java中为什么8字节的long取值范围小于4字节的float?

本文探讨了Java中8字节的long和4字节的float的取值范围。long类型能表示的整数范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807,而遵循IEEE 754标准的float则能表示从1.18 x 10^-38到3.4 x 10^38的数值,其指数部分通过偏移量进行调整,允许表示-126到127的指数值。" 115039121,10547223,使用Eclipse JPA工具自动生成Java实体,"['Java', 'JPA', 'ORM', '数据库连接', 'Eclipse插件']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

long

long:在Java中表示整数类型,占据8字节(即64位)的存储空间
在这里插入图片描述
若不考虑正负,则其表示最大范围是:全为零~全为一,即从0~264-1;
但数据在计算机中以二进制的补码存储,即有正负也有相应的反码、补码,那么long所能表示范围是多少呢?

-2 63<= long <= 2 63 - 1

即:

-9,223,372,036,854,775,8089,223,372,036,854,775,807

float

​ 在Java中,4字节的float遵循 IEEE 754标准,为单精度浮点数
在这里插入图片描述
要表示单精度浮点数,需将数据表示为科学计数法的表示方法,并分离出符号、指数、尾数;详情可见:单精度浮点数表示
在这里插入图片描述
那么,单精度浮点数的表示范围是多少呢?


指数:
IEEE 754标准中,对于指数部分全0和全1具有特殊意义:全0的指数部分表示非规格数,全1的指数部分表示特殊数;
因此,除去全0和全1,指数部分可表示:0000 0001 ~ 1111 1110;即 1 ~ 254,因此减去偏移量,其表示范围实际上是:-126 ~ 127


尾数:
23位尾数,从全0到全1,因为隐藏了整数部分的1(用科学计数法表示二进制数时,1 <= a < 2,因此 a 的整数部分为1)

在这里插入图片描述
综上,单精度浮点数的表示范围为:

±a x 2指数:-[1, 1.99999988079071) x 2-126 ~ +[1, 1.99999988079071) x 2127(注意开闭区间)
即:

1.18 x 10 -38 ~ 3.4 x 10 38

在这里插入图片描述
而,long数据类型所表示的范围为:
-9.2 x 10 -18 ~ 9.2 x 10 18

因此,4字节的float所表示范围要大于8字节long所表示的范围.


Q:为什么表示浮点数的指数部分时,会有偏移量的存在?——单精度偏移量为127,双精度偏移量为1023
Q:指数部分,全0和全1所表示的特殊数的作用又是什么呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值