在Javascript中,Number.MAX_VALUE
是数字的最大值。我有一个问题
(Number.MAX_VALUE + 123) == Number.MAX_VALUE //true
(Number.MAX_VALUE + Number.MAX_VALUE) == Number.MAX_VALUE //false
我无法理解。有人可以解释一下吗?
答案 0 :(得分:4)
在第一个示例中,您只需将数字增加一个非常小的数字:
根据{{1}},123
不算什么。所以你“迷失”了一些精确度:它不会改变数字。
在第二个中,您超过最大值,因此您的号码不再是数字,它是1.79^308
。
Infinity
答案 1 :(得分:1)
在第一种情况下,你只是失去了精确度(向另一种情况添加一个相对较小的数字没有效果),而在第二种情况下,你会溢出到无穷大。
编辑:将Number.MAX_VALUE+123
视为近似值:它就像尝试求和1 + 0.000000000000000000000001
....你仍然得到1
因为数字只有this.calculate = function(obj){
return $http.post(PATH+'txn/calc',obj).then(function(resp){
return resp;
}).catch(function(error){ alert(error) };
};
有限精度