|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.04.2007, 19:44 | #1 |
Регистрация: 22.04.2007
Сообщений: 3
|
Проверка деления на ноль (Как проверить?)
Подскажите пожалуйста как при решении формул с дробями предупредить ошибку деления на ноль?
Я сначала написала через if((выражение в знаменателе)<>0) then \\вычисление дроби else MessageDlg('Ошибка! Деление на ноль!',mtError,[mbOK],0); Но мне сказали что это неправильно. Подскажите плиз!
Я - живая легенда, а не виртуальный миф...
|
22.04.2007, 20:12 | #2 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Естественно неправильно. Мало когда дробное число, особенно типа real будет равно 0. Погрешность присутствует. Нужно так:
if (abs(value)>=0.00001) then деление на value else MessageDlg('Ошибка! Деление на ноль!',mtError,[mbOK],0); |
22.04.2007, 20:21 | #3 |
Регистрация: 22.04.2007
Сообщений: 3
|
Спасибо огроменное!!!
Значит, если я правильно, поняла то все значения, которые меньше 0.00001 он автоматически округляет до 0 ?
Я - живая легенда, а не виртуальный миф...
|
22.04.2007, 20:46 | #4 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Нет. Просто нужно выбрать, какой интервал считать 0. Он вообще ничего не округляет. Результат будет настолько большим, что будет переполнение. Можно выбрать 0.0001 или 0.000001. Это по вкусу. Нужно, чтобы этот интервал был не слишком малым.
|
22.04.2007, 22:01 | #5 |
Студент
Форумчанин
Регистрация: 10.11.2006
Сообщений: 196
|
Даешь тип Extended или Comp - тогда можно <>0.
Visita Interiorem Terrae Rectificando Operae Lapidem...
|
22.04.2007, 23:37 | #6 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Не факт. У нас в универе в одной программе переменная, равная 8 выдала в условии меньше 8 true.
|
23.04.2007, 07:03 | #7 |
Забанен
Форумчанин Подтвердите свой е-майл
Регистрация: 01.11.2006
Сообщений: 420
|
А вас в не учили обрабатывать исключения (класс Exception)?
там типа try ... except ... else ... end; или try ... finally ... end;
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
|
23.04.2007, 07:21 | #8 |
Регистрация: 22.04.2007
Сообщений: 3
|
У нас вообще преподавательница в универе лекции не читает, только задачи каждый раз дает новые, а вы сами разбирайтесь что и как там в них делать... Вот и приходиться самой сидеть с учебниками разбираться... А до таких исключений я еще не дошла...
Я - живая легенда, а не виртуальный миф...
|
23.04.2007, 16:22 | #9 | |
Студент
Форумчанин
Регистрация: 10.11.2006
Сообщений: 196
|
Цитата:
8.0, а не 7,(9). Такое может быть, если, чтобы увидеть значение переменной, вы ее преобразовывали в строку. Код:
Visita Interiorem Terrae Rectificando Operae Lapidem...
|
|
23.04.2007, 18:08 | #10 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Скорее всё-таки 7,(9), поскольку оно отображается как 8.
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
задача в паскале, помогите пожалуйста я полный ноль | Arsenal777 | Помощь студентам | 8 | 03.06.2008 22:22 |
Дюди добрые помогите по ПАСКАЛЮ. Я полный ноль в нем )) | Jey_RO | Помощь студентам | 4 | 24.05.2008 13:06 |
Машина Тьюринга (дробная часть от деления) | o1ps | Свободное общение | 0 | 03.12.2007 14:02 |
Вычисление корня уравнения методом деления отрезка пополам | Absent | Помощь студентам | 12 | 25.11.2007 17:54 |
Я-ноль: нужны проги для начала. Где? | kypto8 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 31.03.2007 09:29 |