跳到主要内容

经典问题

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能支持的最大数字。