关于 Number.MAX_VALUE

sha*_*nbo 3 javascript numbers

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

(Number.MAX_VALUE + 123) == Number.MAX_VALUE  //true
(Number.MAX_VALUE + Number.MAX_VALUE) == Number.MAX_VALUE  //false
Run Code Online (Sandbox Code Playgroud)

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

Mis*_*lis 5

在第一个示例中,您只需将您的数字增加一个非常小的数字: 123根据1.79^308是什么。所以你“失去”了一些精度:它不会改变数字。

在第二个中,您超过了最大值,因此您的数字不再是数字,而是Infinity

console.log(Number.MAX_VALUE + 123);
console.log(Number.MAX_VALUE + Number.MAX_VALUE);

/* Is (Number.MAX_VALUE + Number.MAX_VALUE) a number? */
console.log(Number.isInteger(Number.MAX_VALUE + Number.MAX_VALUE));
Run Code Online (Sandbox Code Playgroud)