经典问题
2023年02月10日
一、JS 整数是怎么表示的?
答: 对于Number
类型在计算机内存中通过64
(1+11+52
)位来表示一个数字
-
第0位:
1 位
。符号位,0表示正数,1表示负数(s) -
第1位到第11位:
11 位
。储存指数部分(e) -
第12位到第63位:
52 位
。储存小数部分(即有效数字)f 。对于尾数部分(小数部分)而言,在规约形式下第一位默认为1,通常省略不写。所以,JavaScript
提供的有效数字最长为53
个二进制位(64
位浮点的后52
位+被省略的1
位),这也是JS
最大安全数是Number.MAX_SAFE_INTEGER == Math.pow(2,53) - 1
, 而不是Math.pow(2,52) - 1
的原因。
二、Number() 的存储空间是多大?如果后台发送了一个超过最大自己的数字怎么办
答: Math.pow(2, 53)
,53
为有效数字。会发生截断,等于JS
能支持的最大数字。