标签:
数值都有个最大值,如果你想强行大过它, 比如这么干
const NM = Number.MAX_VALUE; console.log(NM+998,NM==NM+998);//true console.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
这就完事儿了~
这东西知道就行了,工作中也确实没怎么用到过。
标签:
原文地址:http://www.cnblogs.com/daidaidai/p/5860722.html