关于Number.MAX_VALUE的事情

时间:2017-06-09 08:54:48

标签: javascript numbers

在Javascript中,Number.MAX_VALUE是数字的最大值。我有一个问题

(Number.MAX_VALUE + 123) == Number.MAX_VALUE  //true
(Number.MAX_VALUE + Number.MAX_VALUE) == Number.MAX_VALUE  //false

我无法理解。有人可以解释一下吗?

2 个答案:

答案 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) }; }; 有限精度