


Можно ли назвать такой код на JavaScript безопасным для сложения двух чисел?
Знаю если ввести очень больше число, то получится результат Infinity что в итоге даст результат "ошибка при вводе". Но не думаю что кому-то придется складывать таких очень большие числа которые выходят за пределы double. Спрашиваю чисто ради интереса.

Исправленная версия.

Безопасность кода целиком и полностью зависит от условий его выполнения. Они определяются практическим применением, контекстом задачи.
Здесь мы можем выделить только подзадачу ввода чисел, потому что у кода отвечающего за это, есть практическое применение. А вот суммирование этих чисел, уже бессмысленно (результат не используется).
Когда задачи нет, и код по факту бесполезен - он безопасен. Абсолютно.
Проще говоря: даже если результатом сложения здесь будет бесконечность, это безопасно: потому что в данном сферическом дрочинге с JS, она ничего не сломает. Следовательно, код безопасен.
И половину проверок тут можно выбросить: с тем же успехом достаточно чекать только результат типкаста ввода (числа ли получились).
А для сложения чисел которые могут оказаться слишком большими, существует длинная арифметика: это не только BigInt, но и специальные алгоритмы, о которых ты можешь найти много инфы в сети.
Немного мудрёно.
Кстати:
33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n*33554432n
Равно:
7285908954166457700414893610051377100761015127206022342834003676493767749532239115870894263820546609000969770766271532369925924763814487834809631181124233558458805869532680250502121614314795029312656717054764607265418814132438492380040808344666106680943009541857260509695527649084268562485964470565797389759451584676894528521215499474250432144479862547610329540695315367030399638617679078286104606403820493720390620152548591610984902942750750772365877926584855359804900148937987952545500651562005535753038434540818419420446472774743798746815389764334090463279067332727229290407592736864185624859147888788031219146851263929707892191739071122773180478745699344300411891799074329746893895358230112564993751408497701461547944289153642687926479553366398923760231205065666251572195696615331717292490564144831512379512228502907862854771689850579527685027646668661283251176097410058255923573211631375170900502380980766109160242910122294236854063789632397276097607683636046554617074793024503820103737652361124211029035757202981272643881912804814569346274217798022961440258387958535084254730462322602328307318173267781746352858951659290624n
Посчитал сейчас в консоли. BigInt() называется.
Попробуй сложить 0.1 и 0.2, удивишься)
А если 1 из num = 0?