JS能表示的范围为是2-1075~21024(开区间)大小的数,当大于等于最大值/小于等于最小值时会发生正向溢出/负向溢出
那这个取值范围是咋的得出的?
看这个问题前我们应该先看一看js底层的如何表示数!
JS的所有数值都是以64位浮点数形式存储的,也就是JS底层没有整数,只有浮点数,某些运算需要整数的JS会把64位浮点数转换为32位整数的形式再进行运算
JS的64位
第一位:用来表示正负 0表示正 1表示负
第2~第12位 (共11位)用来表示指数部分(决定大小)
第13~第64位(共52位) 用来表示小数部分(决定精度)
这需要额外补充一点:
(如果指数部分的值在0到2047之间(不含两个端点),那么有效数字的第一位默认总是1,不保存在64位浮点数之中。也就是说,有效数字这时总是1.xx…xx的形式,其中xx…xx的部分保存在64位浮点数之中,最长可能为52位。因此,JavaScript 提供的有效数字最长为53个二进制位。)
那么重点来了:
JS有11位指数部分,那么能表示的最大的数是2047(211-1)因为除去0,分出了一半表示负数,则能表示的范围是2-10232^1024^(开区间),因为会出+0和-0所以左边是1023,又因为还有小数位52位所以范围是2^-1075^21024(开区间)。