isFinite的字面意思是:是有限的吗?
“如果 number 不是 NaN 、负无穷或正无穷,那么 isFinite 方法将返回 true 。 如果是这三种情况,函数返回 false 。 ”
var a1 = Number.MAX_VALUE + 100;
alert(a1==Number.MAX_VALUE)
将会alert true.这是为什么呢?
-----
http://bbs.51js.com/thread-66155-1-1.html
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.
“如果 number 不是 NaN 、负无穷或正无穷,那么 isFinite 方法将返回 true 。 如果是这三种情况,函数返回 false 。 ”
var a1 = Number.MAX_VALUE + 100;
alert(a1==Number.MAX_VALUE)
将会alert true.这是为什么呢?
-----
http://bbs.51js.com/thread-66155-1-1.html
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.
解决方案 »
- js获取treeview所有选中节点值(checkbox)
- 高手帮瞧瞧为什么这段代码没有办法正确导出excel
- javascript一个简单的循环问题?(ASP应用)
- 求正则表达式
- 在线求救!一个好象不可能解决的问题,哪个高手帮帮我。(打开一个新页面,但仅执行onload的javascript事件,而不要看到新页面刷新。)
- 怎样改变表单中的单选框的name属性?
- 菜鸟请教javascript关于几个字符串函数的小问题。
- 100分求改变表格打印边框的线的粗细
- 大家看看这两段代码的区别,为什么结果不相同
- IDEA中 编写javascript,经过变量赋值后 没有代码提示了
- 有熟悉asp.net又精通javascript的进来看看这个问题
- javascript中作用域,优先级等等问题, 求助中。。。。。。。。。。。。。。。
var a1 = Number.MAX_VALUE + 100;
var a2 = Number.MAX_VALUE * 2;
alert(a1 == Number.POSITIVE_INFINITY); //输出false
alert(a2 == Number.POSITIVE_INFINITY); //输出true