码迷,mamicode.com
首页 > 其他好文 > 详细

关于数值的最大值

时间:2016-09-11 01:23:11      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

 技术分享

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

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!