Информация
Gravatar for 2518iiitblpb
6
iiitblpb
Автор треда
97
Просмотров треда
30 января в 05:36
Тред создан
5 сообщений
30 января в 05:38

Для первого теста sumDigits(1246172836817263875) в ответе указано 76. Если сложить все в ручную, получится 87.

11 февраля в 09:22

А ведь и правда 87. Хотя в коде вроде все логично написано, выдаёт 76, а в ручную 87. Может особенность JS? Где то теряется одна цифра?

11 февраля в 09:32

Проверил Именно число: 12461728368172638 все ок Но потом начинается магия и уже выдаёт ошибку в сложении если добавлять цифры. 12461728368172638 = 75 (все ок) 124617283681726387 = 75 (не ок) 1246172836817263875 = 76 (не ок)

11 февраля в 19:57

Вот вам ответ на вашу загадку: "Numeric literals with absolute values equal to 2^53 or greater are too large to be represented accurately as integers" Число взятое для теста больше максимального значения для integers. Чтобы получить ожидаемый вами 87 используйте BigInt -- sumDigits(1246172836817263875n)

19 февраля в 08:47

Действительно! Слишком большие числа "урезаются" еще на этапе передачи в функцию. Попробовал решить проблему использованием BigInt, в том числе используя его при передаче аргумента в функцию. Погрешность значительно сократилась, но всё же осталась. Поэтому единственным выходом поддержания корректности тесткейсов и примеров вызова функции вижу уменьшение в них числовых значений. Так и сделано.

0/9000