![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#31 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#32 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
![]()
Я бы вызывал исключение и если оно не обрабатывается возвращал бы 0xFFFF
А, сори, не увидел что юзаются динамические типы, тогда я бы брал порядок максимального порядка в выражении. Последний раз редактировалось Levsha100; 17.12.2010 в 22:02. |
![]() |
![]() |
![]() |
#33 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Надо было опорс прикрутить....
Ну тогда ясно, я сделаю оба варианта. Исходник выложу здесь, как добавлю вторую операцию деления.... ЗЫ. По теме длинной арифметики готовится статья в журнал...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#34 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Сори, не мог ответить чуть раньше.
Я бы это через исключения делал. Причина проста. Если пользователь допустил ошибку, и произошло деление на 0, то его об этом нужно известить. Задача самого пользователя выяснить, при каких исходных данных это произошло. А если уж и возвращать какой-то результат, то уж точно не огромный массив забитый 9-ми (A = 0/0 = ?). Добавь еще одно поле. Туда сохраняй OK, NaN, +INF или -INF. Вот только что потом делать с этими "не числами". Например: A = 3 / 0 = +INF B = -4 / 0 = -INF C = A + B = ? Добавлено ------------------------------------------------------- Отсебятина: Вообще, по большому счету, результат любого деления на ноль действительно не является числом. Лично я интерпритирую его для себя как "одновременно любое из множества". А следовалельно, простые арифметические выражение к ниму не применимы. Это всеравно как (-1)^0.5 = i. i - это не число, в привычном понимании. i - это больше вектор, чем число. Так что, если реализуешь чисто арифметический механизм, то исключение, исключение и только исключение. Последний раз редактировалось Sibedir; 19.12.2010 в 07:44. |
![]() |
![]() |
![]() |
#35 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Как и просили выкладываю исходники. Решение - две операции деления - одна вызывает исключение, вторая разрешает делить на нуль
![]() ЗЫ. модуль BigNum.pas...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 20.12.2010 в 15:32. |
![]() |
![]() |
![]() |
#36 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]() Цитата:
Это съэкономило бы память и производительность. Представь. У тебя 1000 чисел. Даже если это поле используется лишь в одном числе, а в остальных лежит мертвым грузом - экономия ~19КБ. А если пользователь по ошибке допустил создание массива из 1000 чисел делением на нуль, памяти сожрется 20МБ. А еще проверка на бесконечность, да и просто создать такое число весьма затратно по времени. Ведь если это на статью, точно будет камень в твой огород. И, самое плохое, что от новичков. Последний раз редактировалось Sibedir; 20.12.2010 в 16:41. |
|
![]() |
![]() |
![]() |
#37 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
введи чтото типа
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#38 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Utkin, необессудь, сразу еще пару замечаний.
Убери код типа Код:
И еще. Не могу понять, как работать с Цитата:
Вот так делаю Код:
Объясни на пальцах, вот эту часть Код:
Последний раз редактировалось Sibedir; 20.12.2010 в 17:01. |
|
![]() |
![]() |
![]() |
#39 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Ну код-то еще не сильно оттестирован, поэтому поводу была тема (ссылка в первом посте), но я над этим работаю
![]() Цитата:
Цитата:
![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
||
![]() |
![]() |
![]() |
#40 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Удалено пользователем
Последний раз редактировалось Sibedir; 21.12.2010 в 06:51. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Деление на нуль при запуске | 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 |