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

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

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

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

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

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

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

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

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

Цитата:
На данный момент операция деления на нуль возвращает нуль. Я считаю это не хорошо
Я тоже считаю, что это не хорошо. Более того, я считаю, что это не правильно. Должно быть "очень много", а не 0 (что, собственно, я Вам и предлагал).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 17.12.2010, 09:21   #15
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Я тоже считаю, что это не хорошо. Более того, я считаю, что это не правильно. Должно быть "очень много", а не 0 (что, собственно, я Вам и предлагал).
ОК. Тогда еще один вопрос. Моя операция деления имеет дополнительный параметр - ограничение на число разрядов в дробной части. То есть операция может порождать бесконечное число разрядов, например, 1/3 можно делить хоть до конца света . В тоже время я не округляю, я порсто не делю дальше - допустим разделить 1 на 3 до 10 разрядов в дробной части (число разрядов в целой части всегда фиксировано). Может стоит использовать эту информацию следующим образом - разделить 1 на 0 до 10 разрядов ---> 9999999999,9999999999
Разделить 1 на 0 до 5 разрядов ----> 99999,99999
Или же всегда возвращать определенное число? Например сто раз по 9?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.12.2010, 09:31   #16
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Вы так и не говорите, что это за расчеты. Если это калькулятор, то ошибки делении на 0 не обойти никак. Более того, о ней нужно знать. А если это практические расчеты, то предельные значения Вы знаете. Более того, если в определенном месте расчетов встречается деление на 0, то (очень часто) дальнейшие вычисления можно и вовсе не производить, а сразу записать результат.

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

Я не знаю, какие будут расчеты - просто написал юнит для организации работы с длинными числами. Кто ее и как воспользуется это вопрос. Может студент на ее основе напишет калькулятор, а может кто захочет воспользоваться для проведения астрономических расчетов... Иными словами, мне не известны предельные значения.
Лично я планирую на ее основе написать свой интерпретатор...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.12.2010, 10:18   #18
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

ИМХО:
Создать спец глобальный флаг о делении на нуль (вообще в него все ошибки скидывать), возвращать его значение по GetLastEггог. А результатом деления на ноль возвращать некоторое значение типа NaN или INF. У Вас там дофига место в структурах, посвященным разрядам - добавьте туда интеджер значение о том, что это -
NaN, INF или нормальное число.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 17.12.2010, 10:23   #19
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Я тоже считаю, что это не хорошо. Более того, я считаю, что это не правильно. Должно быть "очень много", а не 0 (что, собственно, я Вам и предлагал).
Я однажды сталкивался с такой проблемой. Простите, код не нашёл (давно это было), но идея собственно такая.
Где-то в API можно получить разрядность машины. Так вот, функция получает разрядность и выводит максимальное число в соответствии с разрядностью, или (всё таки) через исключения. Насколько я знаю, их никто не отменял. Можно эти методы совмещать. Например, если мы делим не на 0, а на оооочень маленькое число, выдаётся максимальное число по разрядности, если голимый 0 - иключение типа "Переполнение разрядности", ну или что-то в этом роде.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 17.12.2010, 10:36   #20
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Я однажды сталкивался с такой проблемой. Простите, код не нашёл (давно это было), но идея собственно такая.
Где-то в API можно получить разрядность машины. Так вот, функция получает разрядность и выводит максимальное число в соответствии с разрядностью, или (всё таки) через исключения. Насколько я знаю, их никто не отменял. Можно эти методы совмещать. Например, если мы делим не на 0, а на оооочень маленькое число, выдаётся максимальное число по разрядности, если голимый 0 - иключение типа "Переполнение разрядности", ну или что-то в этом роде.
Да нету здесь разрядности, читайте внимательно - арифметика построена как платформонезависимая. Сколько мне надо разрядов столько и будет (ну а кромя момента, когда памяти не хватит). Это арифметика чисел с произвольным числом разрядов.
Под разряды выделяется 2 динамических массива - сколько туда разрядов поместится?
Специально проверил только что - создал число в котором 125002 разряда, проглотил и не подавился (провел сложение с 1). Что дальше?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 17.12.2010 в 10:40.
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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