1

В коде преобразование в строку String(159712434140109896) возвращает "159712434140109900". Почему так происходит и как это победить?

Kromster
  • 13,809
Slavrov
  • 173
  • Это во всех браузерах или в конкретном? Видимо теряются последние биты в преобразованиях - и неправильно преобразовует. Для больших чисел - разные браузеры могут по разному себя вести. – nick_n_a Sep 29 '20 at 10:46
  • Можно попробовать остаток от деления на 10 проверить, если он содержит 6 - то можно написать ф-цию которая "переведёт вручную" – nick_n_a Sep 29 '20 at 10:47
  • 1
    Потому что настолько большое значение выходит за пределы точности float-чисел (не больше 15-17 десятичных знаков), и с этим ничего не поделать – andreymal Sep 29 '20 at 10:48
  • потому что 159712434140109896 не представимо, если ты просто выведешь его, ты точно так же увидишь 159712434140109900 – Grundy Sep 29 '20 at 10:48
  • Связанный вопрос: Вывод числа double (10^18)+1. – wololo Sep 29 '20 at 10:51
  • Возможный дубликат вопроса: Отображение числа 9223372036854775807 – wololo Sep 29 '20 at 10:53
  • 1
    159712434140109896 > Number.MAX_SAFE_INTEGER -> true – Yaant Sep 29 '20 at 10:56
  • biggestInt = 9007199254740992; максимальное число – Алекс Данилин Sep 29 '20 at 10:50

0 Answers0