var number1=Number.MAX_VALUE; var number2=number1+100000; var number3=number1+Number.MAX_VALUE; console.log(isFinite(number2)); //结果为true console.log(isFinite(number3)); //结果为false
我自己分析: javascript中,number最大存储为Number.MAX_VALUE; 为什么number2超出了这个数值 isFinite判断还是为true呢? 而number3的时候,却判断为 false了呢?
求javascript高手,帮小白解析下原理,感激不尽。
number1 === number2 //true number1+Number.MAX_VALUE //Infinity
Number.MAX_VALUE 1.7976931348623157e+308
1.7976931348623157e+308 + 100000 => 1.7976931348623157e+308 + 0.0000000000000000e+308 => 1.7976931348623157e+308
1.7976931348623157e+308 + 1e+292 => 1.7976931348623157e+308 + 0.0000000000000001e+308 => Infinity
@FourLeafClover 感谢 你的连接
谢谢各位帮助,大概意思就是 加的数值太小,会被 直接丢失,或者四舍五入。 如 3楼给的,加的数值过小,结果却不变。(希望能帮助后面需要理解的朋友)