当前位置: 首页 > news >正文

MAX_VALUE 和 MAX_SAFE_INTEGER的区别及相关知识

MAX_VALUE 和 MAX_SAFE_INTEGER是标准内置对象Number的静态属性

  • MAX_VALUE是所能表示的最大数值,1.7976931348623157e+308
  • MAX_SAFE_INTEGER是最大安全整数,9007199254740991

原因见下方

js中的数值使用IEEE754标准中的64双精度浮点数来表示

符号位阶码位小数位
11152
signexponentfraction
6362至52编号51至0位编号(从右边开始为0)

在这里插入图片描述

数值是以科学计数法进行储存,整数部分永远为1,exponent表示指数,fraction表示小数部分。

举例说明:
0 10000000111 0000000000000000000000000000000000000000000000000000
=》
1.0000000000000000000000000000000000000000000000000000 * 2 ^ (1031 - 1023) = 256

所以在标准下的最大数值是:0 11111111110 1111111111111111111111111111111111111111111111111111
= 1 * 2 ^ (2 ^ 11 - 1 - 1:特殊值 - 1023:偏正值 - 52:小数点偏移) * (2 ^ (52:小数位 + 1:隐含整数1) - 1)
= 1 * 2 ^ 971 * (2 ^ 53 - 1)
= 1.7976931348623157e+308

所以在标准下的最大安全数值是:2 ^ 53 - 1
= 9007199254740991

特殊值:IEEE754规定的三个特殊值

  • 当指数位(阶码位)部分全为1(即2047),且尾数部分全为0时,表示的是正无穷大(+Infinity)。
  • 若符号位为1,则表示负无穷大(-Infinity)。
  • 若尾数(小数位)部分不全为0,则表示NaN(不是一个数字)。

偏正值 :因为,指数的值可能为正也可能为负,如果采用补码表示的话,全体符号位S和Exp自身的符号位将导致不能简单的进行大小比较。正因为如此,指数部分通常采用一个无符号的正数值存储。双精度的指数部分是−1022~+1023加上1023,指数值的大小从1~2046(0(2进位全为0)和2047(2进位全为1)是特殊值)。浮点小数计算时,指数值减去偏正值将是实际的指数大小。


当超出这个数字的时候,小数位可能没有更多的位置来存储精度,可能将导致计算出错

经典面试题:Number.MAX_SAFE_INTEGER + 1 == Number.MAX_SAFE_INTEGER + 2

原因:由于计算后的2进制结果超过精度,所以需要进行向偶舍入,导致最终结果相同

Number.MAX_SAFE_INTEGER + 1
= 0 01111111111 11111(40x1)1111111+ 00000(40x0)0000001
= 0 01111111111 100000(40x0)0000000
进行向偶舍入
= 0 01111111111 100000(40x0)000000

Number.MAX_SAFE_INTEGER + 2
= 0 01111111111 11111(40x1)1111111+ 00000(40x0)0000010
= 0 01111111111 100000(40x0)0000001
进行向偶舍入
= 0 01111111111 100000(40x0)000000

向偶舍入:有效数字超出规定数位的多余数字是1001,它大于超出规定最低位的一半(即0.5),故最低位进1。如果多余数字是0111,它小于最低位的一半,则舍掉多余数字(截断尾数、截尾)即可。对于多余数字是1000、正好是最低位一半的特殊情况,最低位为0则舍掉多余位,最低位为1则进位1、使得最低位仍为0(偶数)。


http://www.mrgr.cn/news/14891.html

相关文章:

  • vue-router4.2.5 useRouter源码解读
  • GAN Inversion(GAN 反演)
  • Spring Cloud全解析:网关之GateWay简介
  • 利用通义灵码实现我的第一次开源贡献
  • JVM垃圾回收器
  • 发红包案例(java)
  • Linux字体缺失导致EasyExcel报错
  • 谷粒商城实战笔记-284-商城业务-分布式事务-本地事务隔离级别传播行为等复习
  • 生成艺术,作品鉴赏:将像素进行到底
  • 【曾哥分享-1】云 WAF 绕过
  • IWebHostEnvironment 的参数有哪些 ,说明下
  • 三级_网络技术_53_应用题
  • spring boot 根据实体类
  • df保存为excel
  • 【MRI基础】对比度噪声比CNR概念
  • 了解‌Prolog用于故障诊断
  • 阿里龙晰系统上将yum安装的myql_8.0.36升级到mysql_8.4.0的过程
  • MT5016A-ASEMI无人机专用整流桥MT5016A
  • 记一次 Garnet 的安装部署问题排查
  • SQL-多表查询