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位)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容