首页 > 代码库 > 关于数值的最大值

关于数值的最大值

 技术分享

数值都有个最大值,如果你想强行大过它, 比如这么干

const NM = Number.MAX_VALUE;console.log(NM+998,NM==NM+998);//trueconsole.log(NM+pow(2,980));//Infinity

发现是越不过去的,不可能大过MAX_VALUE,而且如果超出了最大处理范围,还会出现Infinity。

这个MAX_VALUE最大值是怎么计算得来呢? js遵循的是IEEE754双精度浮点数,要求出这个值,得知道尾数部分和指数部分。

指数部分是不可能超过1023。 如

for(let i=1;i<Number.POSITIVE_INFINITY;i*=2)  console.log( (log(i)/LN2).toPrecision(4) );

输出最多到1023,超过POSITIVE_INFINITY就跳出循环。

知道了指数部分,接着再让尾数部分全部为1。所以

console.log(    Array.from({length:52},(v,i)=>pow(2,~i)).reduce((a,b)=>a+b,1)*pow(2,1023)==    Number.MAX_VALUE )//true

这就完事儿了~

这东西知道就行了,工作中也确实没怎么用到过。

关于数值的最大值