JavaScript数值最大精度
根据国际标准 IEEE 754,JavaScript 浮点数的64个二进制位,从最左边开始,是这样组成的:
第1位:符号位,0表示正数,1表示负数
第2位到第12位:指数部分
第13位到第64位:小数部分(即有效数字)
符号位决定了一个数的正负,指数部分决定了数值的大小,小数部分决定了数值的精度
0-4 5-8 9-12 13-16 ... 56-60 61-64
xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx |64位
IEEE 754中规定有效数字第一位默认总是1,不保存在64位浮点数之中
即:有效数字总是1xx...xx的形式,其中xx..xx的部分保存在64位浮点数之中,最长可能为52位
因此,JavaScript 提供的有效数字最长为53个二进制位
JavaScript表达的最大整数是:pow(2, 53) = 9007199254740992
大于2的53次方以后,多出来的有效数字(最后三位的111)都会无法保存,会变成0