Как бороться с большими числами в JavaScript

Я ищу математическое решение, которое имеет дело с действительно (длинные, большие, огромные, штормовые) числа. Я еще ничего не нашел, но я не хочу думать, что эта проблема еще не решена в настоящее время. Я ищу простое решение для чисел, такое как Microsoft Excel Precision (30 десятичных знаков) или решение BigInteger (Java). в Javascript, конечно.

4 ответа

Решение

Похоже, это было решено раньше:

Каково стандартное решение в Javascript для обработки больших чисел (BigNum)?

http://jsfromhell.com/classes/bignumber

http://www-cs-students.stanford.edu/~tjw/jsbn/

Если вам нужны только целые числа, вы можете использовать BigInteger.js.

В поисках большой целочисленной библиотеки для криптографической реализации ElGamal я протестировал несколько библиотек со следующими результатами:

Я рекомендую это: Том Ву jsbn.js ( http://www-cs-students.stanford.edu/~tjw/jsbn/)

  • Полный набор функций и быстрый

Большая целочисленная библиотека Leemon Baird ( http://www.leemon.com/crypto/BigInt.js)

  • Полный набор функций и довольно быстро
  • НО: отрицательное представление числа глючит!

bignumber.js ( https://github.com/MikeMcl/bignumber.js)

  • Довольно полный набор функций
  • НО: преобразование действительно больших чисел из строк в объекты BigNumber приводит к INFINITY

Схема арифметической библиотеки для JavaScript ( https://github.com/jtobey/javascript-bignum)

  • JS-реализация схемных арифметических функций
  • НО: нет функции для y= x^e mod n

Я не проверял это сам: BigNumber ( http://jsfromhell.com/classes/bignumber)

  • Функции для высокоточных вычислений
  • НО: он называется медленным из-за внутреннего представления чисел в виде строк

Здесь есть библиотека BigInteger для JavaScript:

(Обратите внимание, что я не использовал это сам. Попробуйте и посмотрите, что вы думаете.)

Существует также библиотека Silent Matt для больших целых чисел. Он не обрабатывает десятичные дроби.

Другие вопросы по тегам