Как стать автором
Поиск
Написать публикацию
Обновить
Криптонит
Разрабатываем. Исследуем. Просвещаем

На ноль делить нельзя... а вообще-то можно! Давайте разберёмся, откуда взялся этот запрет. Покажем на примерах.

Возьмём какое-нибудь число (пусть будет 2) и разделим его на 0,1. Получим 20. Теперь разделим 2 на 0,01. Получим 200. При делении 2 на 0,000001 уже получится 2 000 000. Легко увидеть, что чем ближе знаменатель будет к нулю, тем больше получится результат. Соответственно, результат деления на ноль устремляется в бесконечность. С отрицательными числами всё то же самое, только со знаком минус.

Если же мы делим ноль на ноль, то… получим ещё одну неопределённость. Есть Теорема Лопиталя, помогающая раскрывать неопределённости такого вида, но правила их раскрытия зависят от контекста и свойств анализируемых функций. Согласно IEEE 754 деление нуля на ноль даёт NaN (not a number, не число).

В общем случае говорят, что результат операции деления на ноль не определён.

В практических расчётах деление на ноль — явная ошибка, поскольку обратная операция оказывается невыполнима. Нет такого числа, которое можно умножить на ноль и получить исходное делимое.

Операция деления на ноль имеет смысл только в специализированной алгебраической структуре, которую описывает Теория колеса (Wheel theory). Её суть в том, что вводится понятие обратного числа, а деление заменяется умножением на обратное число. Числовая ось замыкается в кольцо через элемент ∞, а операция деления на ноль определяется как умножение ноля на ∞. Её результат записывается как ⊥, а этот элемент помещается вне кольца. По сути в Теории колеса подменяется смысл операции деления на ноль, поэтому она и становится возможной.

В программировании деление на ноль — распространённая проблема. Не всегда бывает легко поймать деление на ноль в коде. Оно может возникнуть в результате какого-то неявного процесса и привести к критическому сбою.

Например, в начале 1990-х после обновления авионики американские самолёты не могли летать в районе Мёртвого моря. Разработчики софта для процессора бортовой системы не учли, что этот регион находится ниже нулевой отметки высоты. При расчёте параметров полёта происходило деление на ноль, и процессор выполнял общий сброс. Авионика отключалась прямо в полёте.

Теги:
Всего голосов 5: ↑4 и ↓1+4
Комментарии3

Публикации

Информация

Сайт
kryptonite.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия