如何在 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 的控制台编号。您会发现它们并不那么精确
在 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 的控制台编号。您会发现它们并不那么精确