Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2010, 07:20   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию Как правильно делить на нуль?

Вопрос по мотивам темы http://programmersforum.ru/showthread.php?t=126535
Написал длинную арифметику, возник вопрос, как реагировать на попытку делить на нуль?
Генерировать исключение как-то не хочется --> потом программист будет каждое деление в try обертывать, не по фень-шую это. Еще как вариант могу туда запихивать какое-либо число (пока нуль), рассматриваю возможность выставить какой-нибудь специальный флаг... Какие будут предложения?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.12.2010, 07:27   #2
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Мое предложение - генерировать исключение.
_Engine_ вне форума Ответить с цитированием
Старый 17.12.2010, 07:33   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Нафига? Потому что так все делают? Весьма желательно обоснование, почему?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.12.2010, 07:41   #4
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

А для чего на выходе неверное число?
Или флаг проверять после каждого деления? А если вы забудете проверить флаг - то будете думать, что все хорошо и "ракета полетит в другую сторону"
_Engine_ вне форума Ответить с цитированием
Старый 17.12.2010, 07:45   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
А для чего на выходе неверное число?
Я могу записать верное, только скажите какое ?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.12.2010, 08:07   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Utkin появился в результате деления на нуль.
Как отреагировали на Ваше появление? Спрашивали у тех кто делил?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 17.12.2010, 08:11   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Как отреагировали на Ваше появление? Спрашивали у тех кто делил?
Я не могу выразить восторг в процедуре...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.12.2010, 08:29   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В моей практике это обычное дело. По разным каналам поступают разные данные с которыми производятся разные вычисления и результат выводится в виде графика.
Данные могут быть разные. Деление на 0 вполне возможно. Останавливать процесс, кричать "караул", либо как-то по-другому об этом сигнализировать, в данном случае бесполезно, ибо просто некому. Делаю так: при однократном делении на 0 результат просто игнорирую (считая сбоем). При многократном повторном делении - в качестве результата вывожу максимально предельное значение, определенное данной системой (задачей).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 17.12.2010, 08:36   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Дело в том, что это арифметика чисел с произвольным числом разрядов - теоретически сколько даст операционка - тысячи и сотни тысяч разрядов. Ну и какое максимальное число туда пихать? По-настоящему если диапазон числа и ограничен типом, его хранящим, то это значение мне неизвестно и подозреваю что оно на разных машинах будет различно - из-за свопа, и ОЗУ. Засада, однако.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.12.2010, 08:40   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Засада, однако
Я не случайно оговорил, что данный способ применим к определенным прикладным задачам, в которых определены области существования данных. Если же, конечно, вы пытаетесь реализовать Mathcad, то придется строго выполнять правила арифметики и при попытке деления на 0 выводить, например, смайлик с пальцем у виска.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Деление на нуль при запуске Pababop Паскаль, Turbo Pascal, PascalABC.NET 0 12.12.2010 16:43
убрать null (нуль) символы в строке Kib Общие вопросы Delphi 7 25.06.2010 14:22
как поставить ограничение на число нуль а не на символ нуль??? Dr.Swat Помощь студентам 0 12.06.2010 20:35
Делить без остатка rangel PHP 4 30.07.2009 14:31
На 0 делить! abdumanon Microsoft Office Excel 6 07.04.2009 13:18