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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 21:28   #1
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию Сравнение чисел типа real

Есть 2 переменные типа реал. есть такое сравнение
if (nasbaz-asmin)<0 then
nasbaz:=asmin;
НО! Оно не проходит, т.е. если nasbaz=0,345, а asmin=1, на выходе получаем 0,345 . В чем может быть причина?
googl вне форума Ответить с цитированием
Старый 19.12.2011, 21:32   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

есть функция min из модуля math.
Код:
ShowMessage(FloatToStr(nasbaz-asmin));
смотрите итог.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 21:37   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
НО! Оно не проходит, т.е. если nasbaz=0,345, а asmin=1, на выходе получаем 0,345
Не понял прикола. Где то не то вы сделали
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.12.2011, 21:39   #4
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию

Ну итог один и тот же. в чем проблема-то? а насчет min и max хорошее решение?
googl вне форума Ответить с цитированием
Старый 19.12.2011, 21:40   #5
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не понял прикола. Вы получили то что хотели
Нет. Если nasbaz<asmin то nasbaz=asmin это по условию. а в итоге минимальное число проходит.
googl вне форума Ответить с цитированием
Старый 19.12.2011, 21:42   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

точнее вам нужна max.
решение хорошее, лучше вечных if'ов.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 21:48   #7
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
точнее вам нужна max.
решение хорошее, лучше вечных if'ов.
мне ифы по-любому нужны, так как это проверка условия
googl вне форума Ответить с цитированием
Старый 19.12.2011, 21:49   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

такие проверки лучше заменить именно функцией max/min.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 21:55   #9
googl
Форумчанин
 
Регистрация: 05.06.2010
Сообщений: 154
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
такие проверки лучше заменить именно функцией max/min.
if nbbaz=max(nbbaz,bmax) then
nbbaz:=bmax;

я так делаю. там условие просто в задаче: если число выходит за пределы граничного значения, то берем граничное значение. в данном примере мы увеличиваем наше число nbbaz и сравниваем с максимально допустимым bmax.
googl вне форума Ответить с цитированием
Старый 19.12.2011, 21:58   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
nbbaz:=max(nbbaz,bmax);
и все.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с диаграммой и переменными типа Real. AntoshkaK Паскаль, Turbo Pascal, PascalABC.NET 2 08.11.2011 11:00
особенности при добавлении в таблицу данных типа Real Marryy БД в Delphi 12 13.06.2011 17:35
самый быстрый метод сортировки, который расположит в порядке возврастания 50.000 чисел типа real Rusl92 Помощь студентам 8 21.11.2009 20:50
Операции с разными типами чисел (real c integer не умножается!) uvamosk Помощь студентам 10 21.05.2009 21:14