Почему вычисленный оператор по модулю / остатку неверен для больших чисел? - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь понять, почему я не могу рассчитать правильное значение по модулю, используя JavaScript. Я попытался выполнить следующую операцию:

Неправильный ответ

28493595674446332150349236018567871332790652257295571471311614363091332152517 % 6 = 4

Результат должен быть равен 1.

28493595674446332150349236018567871332790652257295571471311614363091332152517 % 6 = 1

Я пытался преобразовать этот номер для BN, но, к сожалению, я всегда получаю один и тот же ответ. Однако, если вы используете wolfram alpha или другое математическое программное обеспечение, оно возвращает правильный ответ.

Что происходит? Что я делаю не так?

1 Ответ

1 голос
/ 13 февраля 2020

Диапазон целых чисел в JavaScript равен +/- 9007199254740991 (Number.MAX_SAFE_INTEGER). Ваш номер просто вне диапазона для JS.

Вы также можете использовать нотацию BigInt, чтобы получить правильный ответ. 28493595674446332150349236018567871332790652257295571471311614363091332152517n % 6n

См. Какое самое высокое целочисленное значение JavaScript, которое число может go без потери точности?

...