如何在 ECMAScript 中检查数字是否大于 Number.MAX_SAFE_INTEGER

How to check if number greater than Number.MAX_SAFE_INTEGER in ECMAScript

在 ECMAScript 中,number 的最大值是 9007199254740991。但是如何检查值是否大于 9007199254740991?

// ---------------- ↓ We don't know at advance which value user will pass
function examle(parameter: number | BigInt): void {
    // check the value before do something with it
}

下面的代码按预期工作,但我不确定是否正确。

console.log(9007199254740992 > 9007199254740991); // "true"
console.log(9007199254740993 > 9007199254740991); // "true"
console.log(9007199254740994 > 9007199254740991); // "true"

在javascript中,所有数字(整数和实数)都使用双精度浮点数存储。实际最大值是 Number.MAX_VALUE,大约是 1.79E+308。所以你做的一切都是对的。

MAX_SAFE_INTEGER, MAX_VALUE and this article

也尝试写入大于 9007199254740991 的控制台编号。您会发现它们并不那么精确