Вопрос, на который сослался модератор, закрывший этот вопрос как дубликат, хоть и содержит 3 ответа, однако несет мало информации о решении этой проблемы в разрезе javascript.
В javascript Number, без потери точности, может быть не больше 253-1 Number.MAX_SAFE_INTEGER или меньше 1-253
Number.MIN_SAFE_INTEGER
Есть метод для проверки попадания числа в указанный диапазон:
Number.isSafeInteger()
console.log(Number.isSafeInteger(8722879621216817))
console.log(Number.isSafeInteger(872287962121681722800))
Сравнительно недавно появился BigInt
BigInt - позволяет использовать большие числа с высокой точностью
Чтобы создать BigInt, добавьте суффикс n в любой целочисленный
литерал. Например, 123 становится 123n. Глобальную функцию BigInt
можно использовать для преобразования обычного числа в BigInt. Другими
словами, BigInt (123) === 123n.
Чтобы получить BigInt со значением больше 253 в конструктор BigInt() можно передать строку содержащую число в десятичном формате.
let n1 = "123456789123456789";
let n2 = "1234567891234567890000000000000000000"
console.log(BigInt(n1).toString());
console.log(BigInt(n2).toString())
console.log((BigInt(n1)+BigInt(n2)).toString())
Поддержка, на 7 марта 2019, судя по MDN такая:
10.4.0 node.js
67 Chromium
65 Firefox
54 Opera
-- Edge
-- IE
-- Safari
-- Firefox Android
Для длинной арифметики, не зависящей от окружения можно использовать решения на чистом javascript, вотнекоторые из них:
bignuber.js
decimal.js
big.js