Я хочу вычислить некоторый (C/D) -ый корень (A/B) с произвольной точностью для десятичного расширения корня (например, если желаемая точность является целым числом E
, результат должен содержать E
цифры после десятичной точки из корня E
может быть равно, по меньшей мере, десяткам тысяч, A, B, C, D - целые числа, содержащие десятки тысяч десятичных цифр), но все найденные мной математические библиотеки Javascript откажутся чтобы справиться с такими цифрами.
Я попытался использовать Decimal.js, но имеет ограниченную точность и ограниченный размер ввода. Например, если я хочу, чтобы вычислить квадратный корень из 2 с 1025 значащими цифрами (где последняя цифра может быть округлена как-то), я использовал следующий код для Decimal.js:Как вычислить (C/D) -ый корень (A/B) с произвольной точностью для сколь угодно больших целых чисел A, B, C и D?
Decimal.set({ precision: 1025 });
var r2 = Decimal.pow(2, Decimal.div(1, 2)).toDP(1025).toString();
console.log(r2);
, но я получаю
Error: [DecimalError] Precision limit exceeded
Возможно ли решить проблему с использованием клиентской стороны (работающей в браузере) Javascript? Насколько я знаю, есть некоторые эффективные алгоритмы для вычисления корней даже для миллионов цифр цифр, но я не видел ни одного из них, реализованного в JS для сколь угодно больших чисел и произвольной точности. Это вообще возможно?
'Точность: 1025': -o – Rajesh
Вы можете установить внутреннюю рабочую точность выше отображаемой точности, 1 цифра каждые 2 или 3 операции в расчетной цепи плюс буфер 3. Это даст здесь 'Decimal.set ({precision: 1029});' – LutzL
@LutzL: Я не понимаю ... какой код я должен использовать, чтобы получить, скажем, 1500 цифр квадратного корня из двух в Decimal.js? Более того, насколько я понимаю, Decimal.js не может иметь дело с целыми числами больше 2^1024. –