当前位置:网站首页>为什么四个字节的float表示的范围比八个字节的long要广
为什么四个字节的float表示的范围比八个字节的long要广
2022-08-09 15:05:00 【acccco】
前言
在Java语言中,数据的基本类型分为两大类,分别是引用数据类型和基本数据类型,而基本数据类型又可以分为字符型,数值型以及布尔型。其中数值型包括整型(byte,short,int,long)和浮点型(float,double)。根据浮点数在计算机中的表示形式,它可以表示比本身字节数大出很多的数值,远大于long的取值范围。
为什么float的4个字节比long类型的8个字节的范围大?
因为整数与小数的底层存储有点不同,小数需要先转成二进制,然后才能进行存储。其中最左边的为符号位,0为正,1为负。接下来的E是指数,一共8位,也用二进制来表示。IEEE规定,在float类型中,用来计算指数的偏移量为127(即存贮指数时要在原基础上+127)。最后的F是小数部分,尾数正是由这23位的小数部分+1位组成的。

float 4个字节 原始分配32位,32 bit中:有1个符号位,23个尾数位(小数)存储数值,8个指数位,所表示的数值范围为-3.403E38到3.403E38,这个数值范围是要大于long型所表示的数值范围的。 而long型占用8个字节的存储空间,即64bit,最左边一位是符号位,0表示正,1表示负,其余23位存储数值,所以long型可以表示的数值范围为-263到263-1。
其中1个符号位:
1表示负数,0表示正数;
其中负指数决定了浮点数所能表达的绝对值最小的非零数;
而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
总结
由此可见,四个字节的浮点数比八个字节的整数范围广,其中浮点数是有精度损失的,并且数值越大,精度损失越大。在需要对小数进行精确计算的场景中不推荐使用浮点数。
边栏推荐
猜你喜欢
随机推荐
文件IO及其函数使用
C语言冒泡排序法
Tracert 命令穿越防火墙不显示星号*的方法
Heap series _0x04: Internal structure of heap (_HEAP=_HEAP_SEGMENT+_HEAP_ENTRY)
3. Using Earth Engine Data
QT页面跳转的实现
2022年深圳杯建模A题思路: 破除“尖叫效应”与“回声室效应”,走出“信息茧房”
VMware 虚拟机添加 2 张网卡 设置 NAT 与 桥接网络
Xshell显示乱码
weiteUP-ciscn_2019_c_1
【建模必胜秘籍】往届国赛建模方法 2021高教社杯 国赛数学建模
低代码的开发前景
初学ARM的个人心得
第四章:使用本地地理空间数据(4.6-4.14)
选择器的使用
学编程的第五天
Zip包的读取与写入
String的构造方法,其他方法
vmware workstation 未能启动vmware
软件测试工具清单









