Почему вычисление не всегда заканчивается ошибкой

Во многих языках программирования обычные числа хранятся в формате с плавающей точкой — способе представлять широкий диапазон значений с ограниченной точностью. Стандарт IEEE 754, на который опираются такие форматы, предусматривает особые значения, в том числе бесконечность. Поэтому при делении положительного числа на ноль некоторые вычислительные системы возвращают `Infinity`: операция выдаёт специальный результат, а не останавливает программу аварийно.

Это не значит, что бесконечность становится обычным числом. Она подчиняется отдельным правилам: например, конечное число, умноженное на `Infinity`, обычно тоже даёт бесконечность. Так значение может пройти через несколько следующих вычислений и повлиять на итог, не вызвав немедленного сбоя.

Как бесконечность меняет результат

Представьте, что программа рассчитывает скорость как расстояние, делённое на время. Если время из-за ошибки или особого случая оказалось равным нулю, результат может стать бесконечностью. Формально вычисление завершилось, но такой ответ не описывает реальную скорость. Если его без проверки использовать дальше — например, при построении графика или расчёте стоимости, — ошибка проявится уже в другом месте.

У этого набора значений есть и другие случаи. Деление нуля на ноль обычно даёт `NaN` — специальный результат со смыслом «не число». Он тоже может распространяться по последующим вычислениям.

Продолжение работы — не гарантия правильности

Бесконечность удобна тем, что вычислительная система может сообщить о предельном результате и продолжить работу. Но программа должна учитывать такой исход там, где он важен: проверить делитель, а затем убедиться, что полученное значение допустимо для конкретной задачи. Иначе отсутствие аварийного завершения лишь отложит обнаружение проблемы — до того момента, когда `Infinity` испортит уже не одно вычисление, а весь результат.