Как получить числа с точностью выше 21 в JavaScript

Вопрос о точности чисел в JavaScript

У меня возникла проблема с отображением больших чисел. Когда пытаюсь достичь более 21 знака после запятой, результат не совпадает с ожидаемым.

Пример результата

Я получаю число: 8.426661309628124e+22

Но должен получить: 8.4266613096281243382112

При использовании toPrecision(21) выдаёт: 8.42666130962812428616e+22

Код

// мой результат вычисляется так
var num = 10;
var fib = [0, 1];
for(var i = 2; i <= num; i++){
    fib[i] = fib[i-2] + Math.pow(fib[i-1], 2);
}
console.log(fib[num-1]);

Как мне можно получить нужную точность для больших чисел?

JavaScript использует IEEE 754 с двойной точностью - всего 15-17 значащих цифр. Числа Фибоначчи быстро превышают этот лимит. Попробуй big.js - она легче BigNumber.js и отлично работает с большими числами. Или перепиши алгоритм на строках, если нужна точность.

да, в JS точнось чисел действительно не идеальна, особенно когда речь идет о больших значениях. я бы посоветовал использовать библиотеки для работы с числами, такие как BigNumber.js или decimal.js. обе эффективно решают проблемы с точностью. bigInt, как ты уже заметил, подходит только для целых чисел. для финансовых расчетов лучше всего использовать decimal.js, он более точный.

Попробуй встроенный BigInt для целых чисел - отлично подходит для фибоначчи. Операции пишутся чуть по-другому. Кстати, зачем тебе такая точность? Может есть другой способ решить задачу?