JavaScript Number 类型 为什么精度位是52位表示范围却是2^53

  • 根据国际标准IEEE 754,javascript浮点数的64个二进制位,从最左边开始,是这样组成的

第1位: 符号位,0表示正数,1表示负数 (1位)
第2位到第12位: 储存指数部分 (11位)
第13位到第64位:储存小数部分(即有效数字 52位)

符号位决定了一个数的正负,指数部分决定了数值的大小,小数部分决定了数值的精度

IEEE 754规定,有效数字第一位默认总是1,不保存在64位浮点数之中。也就是说,有效数字总是1.xx...xx的形式,其中xx..xx的部分保存在64位浮点数之中,最长可能为52位

因此,javascript提供的有效数字最长为53个二进制位
精度最长为53个二进制位,意味着绝对值小于2的53次方的整数,即-(253-1)到253,都可以精确表示

所以换算成十进制,javascript数字最高精度是16位(若整数部分为0,则表示小数点后16位;若整数部分不为0,则表示整体保留16位)

你可能感兴趣的:(JavaScript Number 类型 为什么精度位是52位表示范围却是2^53)