Как бороться с большими числами в 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 для больших целых чисел. Он не обрабатывает десятичные дроби.