当前位置:网站首页>为什么四个字节的float表示的范围比八个字节的long要广
为什么四个字节的float表示的范围比八个字节的long要广
2022-08-02 13:31:00 【学编程的小趴菜】
Java中浮点数分为两种:
种类名称 存储大小 取值范围
float(单精度) 4字节(32bit)
-3.403E38 ~ 3.403E38
double(双精度) 8字节(64bit)
-1.798E308 ~ 1.798E308
存储结构
浮点数的存储分三个部分:
符号位
指数位
尾数位(有效数字)
单精度浮点数32位=1位符号位+8位指数位+23位有效数字
双精度浮点数64位=1位符号位+11位指数位+52位有效数字
计算机存储浮点数
符号位:1表示负值,0表示正值
指数位:float的指数范围8位(为-128~+127),而double的指数范围11位(为-1024~+1023),并且指数位是按补码的形式来划分的。
其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
尾数位:float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,由于最左为1的一位省略了,这意味着最多能表示8位数: 2*8388608 = 16777216 。有8位有效数字,但绝对能保证的为7位,即 float的精度为7~8位有效数字;double:2^52 = 4503599627370496,一共16位,double的精度为16~17位。
IEEE 浮点标准
根据IEEE 浮点标准,任意一个二进制浮点数N可以表示成下面的形式:
32位浮点数
N = (-1)^s × (1.M )× 2^(E-127)
64位浮点数
N = (-1)^s × (1.M )× 2^(E-1023)
符号(sign) s表示符号位,当s=0,N为正数;当s=1,N为负数。
尾数(significand) M是一个二进制小数,1≤M<2。
指数位(exponent) E的作用是对浮点数加权,这个权重是2的E次幂(可能是负数)
E阶码占用8位,阶符采用隐含方式,,即采用移码方法来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。
基本数据类型(4类8种),整数类型,浮点类型,字符型,布尔型。
整数类型:
long 8字节(64bit) -2^63 ---- 2^63-1
32位浮点数
float 四字节(32bit) -2^127--2^127
整数与浮点数在底层存储之间有所不同,所以4位的float比8位的long表示的范围更大
边栏推荐
猜你喜欢

巴比特 | 元宇宙每日必读:蒂芙尼宣布推出限量版 CryptoPunk 定制吊坠

How to connect DBeaver TDengine?

【C语言】手撕循环结构 ——do...while语句及循环练习题(1)

暑假集训-week2图论

Singleton pattern of seven kinds of writing, you know?

3 ways for OpenFeign to set headers

Get out of the machine learning world forever!

How to do short video food from the media?5 steps to teach you to get started quickly
![[C language] Analysis of function recursion (2)](/img/b1/9baa60a69d41a1823ed92001d1b0a0.png)
[C language] Analysis of function recursion (2)

微信小程序getPhoneNumber接口code=40013
随机推荐
WPF效果第一百九十三篇之登录实现
动态组件-component
第48篇-timestamp2参数分析【2022-08-01】
static修饰的函数有什么特点(static可以修饰所有的变量吗)
In-depth analysis and use of Ribbon load balancing
“多源异构”和“异构同源”定义区分详解「建议收藏」
【C语言】函数哪些事儿,你真的get到了吗?(2)
This binding to detailed answers
二叉树的类型、构建、遍历、操作
社区收藏缓存设计重构实战
删除链表的节点
腾讯安全游戏行业研讨会:生态共建,护航游戏产业健康发展
js array recursively use
MySQL - ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
Win11怎么修改关机界面颜色?Win11修改关机界面颜色的方法
国产 GPU 创业潮 喧嚣下的资本游戏
[C language] Analysis of function recursion (2)
[b01lers2020]Welcome to Earth-1
嵌入式系统驱动初级【2】——字符设备驱动基础上_基础框架
package.json and package-lock.json