Javascript 关于Number.MAX_值

Javascript 关于Number.MAX_值,javascript,numbers,Javascript,Numbers,在Javascript中,Number.MAX_VALUE是数字的最大值。我有个问题 (Number.MAX_VALUE + 123) == Number.MAX_VALUE //true (Number.MAX_VALUE + Number.MAX_VALUE) == Number.MAX_VALUE //false 我不明白。有人能给我解释一下吗?在第一种情况下,你只是在失去精度(在另一种情况下添加一个相对较小的数字没有任何效果),而在第二种情况下,你会溢出到无穷大 编辑:将Numbe

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

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

我不明白。有人能给我解释一下吗?

在第一种情况下,你只是在失去精度(在另一种情况下添加一个相对较小的数字没有任何效果),而在第二种情况下,你会溢出到无穷大


编辑:将
Number.MAX_值+123
看作一个近似值:这就像尝试求和
1+0.000000000000000000000001
。。。。您仍然会得到
1
,因为数字只有有限的精度

在第一个示例中,您只需将数字增加一个非常小的数字:
123
根据
1.79^308
算不了什么。因此,您“丢失”了一些精度:它不会更改数字

在第二个例子中,您超过了最大值,因此您的数字不再是一个数字,而是无穷大。
console.log(Number.MAX_值+123);
console.log(Number.MAX\u值+Number.MAX\u值);
/*(Number.MAX\u VALUE+Number.MAX\u VALUE)是一个数字吗*/

console.log(Number.isInteger(Number.MAX_值+Number.MAX_值))浮点运算类似于
Number.MAX\u VALUE+Number.MAX\u VALUE==Infinity
Number.MAX\u VALUE+123=Number.MAX\u VALUE
顺便说一下
(Number.MAX\u VALUE+Math.pow(2969))
不是无穷大<代码>(Number.MAX_VALUE+Math.pow(2970))
是-以防您想知道截止值