js中的MAX_VALUE和POSITIVE_INFINITE

关于无穷大的问题
我看书上说,当一个表达式的运算结果大于Number.MAX_VALUE时,将被赋予值Number.POSITIVE_INFINITY,可是我写了下面的语句,为什么结果不一样呢?
var a1 = Number.MAX_VALUE + 100;
var a2 = Number.MAX_VALUE * 2;
alert(isFinite(a1));     //输出true
alert(isFinite(a2));     //输出false

------解决方案--------------------
isFinite的字面意思是:是有限的吗?
“如果 number 不是 NaN 、负无穷或正无穷,那么 isFinite 方法将返回 true 。 如果是这三种情况,函数返回 false 。 ”


var a1 = Number.MAX_VALUE + 100;
alert(a1==Number.MAX_VALUE)
将会alert true.这是为什么呢?
-----
javascript最大整数 JavaScript & VBScript & DHTML 脚本技术讨论版 无忧脚本
jindw 爬虫:
ecmascript的number类型与java语言的double一样,都是64位浮点型(ieee 754)。
表示方法为
符号位 +指数 +尾数。
尾数的长短,确定精确整数大小。
double类型尾数最多可达到53位,所以理论上讲,js的精确整数最大为:Math.pow(2,53)-1 =9007199254740991.
说js的精确整数谓9007199254740992,也没错,但是,这只是一个巧合,她使用了一位指数。
----------
所以,第一个整数失真在:
alert(9007199254740992 == 9007199254740993);//会alert出true来
.
同样是基本浮点数的失真,造成:
alert(a1==Number.MAX_VALUE);//会alert出true来.
isFinite(Number.MAX_VALUE)会是true,
而isFinite(Infinite)就是false.


作者:核桃
链接:https://www.zhihu.com/question/24423421/answer/27745737
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值