Как проверить, что число больше, чем Number.MAX_SAFE_INTEGER в ECMAScript - PullRequest
0 голосов
/ 06 марта 2020

В 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"

1 Ответ

1 голос
/ 06 марта 2020

В javascript все числа (целые и действительные числа) хранятся с использованием чисел с плавающей запятой двойной точности. Фактический максимум составляет Number.MAX_VALUE, что составляет около 1.79E+308. Итак, вы все делаете правильно.

См. MAX_SAFE_INTEGER , MAX_VALUE и в этой статье

Также попробуйте записать номера консоли больше, чем 9007199254740991. Вы увидите, что они не такие точные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...