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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2014, 13:43   #1
atabekovi
Новичок
Джуниор
 
Регистрация: 25.02.2014
Сообщений: 1
По умолчанию Логика в Дельфи

d:=40; db:=400;
beta:=d/db;
if (beta<0.1) then ShowMessage(' ???? ');
(beta<0.1) дает true.
А если поменять
beta:=0.1;
if (beta<0.1) then ShowMessage(' ???? ');
(beta<0.1) дает false.
Почему- не пойму.

Последний раз редактировалось atabekovi; 25.02.2014 в 13:46.
atabekovi вне форума Ответить с цитированием
Старый 25.02.2014, 13:50   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вещественные числа являются числа с примерной точностью, а не идеальной, то есть в вычислениях есть погрешность.
скажем при делении скорее всего получилось что-то типа 0,09999999999999999, что явно меньше 0,1
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.02.2014, 14:00   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Почему- не пойму.
Неочевидные особенности вещественных чисел
northener вне форума Ответить с цитированием
Старый 27.02.2014, 10:21   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Логика в Дельфи
так это не в дельфи логика должна быть, а в голове А у Вас - простая арифметика, которую по идее должны объяснять, когда изучаете основы паскале (типы данных - вещественный тип)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 27.02.2014, 11:31   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sciv, при чём здесь - "простая арифметика", если речь идёт про машинное представление вещественных чисел?!
Вы по ссылочке не ходили?
Или "простая арифметика" расскажет Вам, что должно быть в Delphi в результате выполнения кода:
Код:
var R:Single;
 begin
  R:=0.1;
  if R=0.1 then
   Label1.Caption:='Равно'

  else
   Label1.Caption:='Не равно'
 end;
пример взял из статьи по ссылке...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.02.2014, 14:52   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Sciv, при чём здесь - "простая арифметика", если речь идёт про машинное представление вещественных чисел?!
вырвано из контекста
Цитата:
Или "простая арифметика" расскажет Вам, что должно быть в Delphi в результате выполнения кода:
расскажет.. Не равно..

Цитата:
которую по идее должны объяснять, когда изучаете основы паскале (типы данных - вещественный тип)
я узнал об этом намного позже основ.. (и сначала на форуме помню Серж и TinMan там просветительствовали)
Poma][a вне форума Ответить с цитированием
Старый 27.02.2014, 15:29   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Цитата:
Sciv, при чём здесь - "простая арифметика", если речь идёт про машинное представление вещественных чисел?!
вырвано из контекста
угу. соглашусь. действительно, вырвано...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2014, 10:40   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Sciv, при чём здесь - "простая арифметика"
Извини, Серж, аналогия не совсем удачная - без расшифровки не понять, потому декодирую, что имел в виду: сравнение вещественных чисел (даже без углубления в дебри машвычислений) - это как арифметика для линейной алгебры. Не поймешь основ - не сможешь (полноценно) работать с более сложным.

А по ссылочке ходил, сам вспомнил многое из того, что подзабыл

Цитата:
я узнал об этом намного позже основ.. (и сначала на форуме помню Серж и TinMan там просветительствовали)
Ну я паскаль начал изучать в институте, и тогда же нам это давали комплексно, как основы. Как раз в теме про вещественный тип сразу рассказывали и про особенности работы с ним. Возможно, программы обучения могут быть разные.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 28.02.2014, 11:07   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sciv, теперь я окончательно понял, что ты имел в виду изначально (я уже после поста Poma][a увидел, что я не корректно прочитал пост).
Теперь всё стало на свои места.
Извини, что я сразу не догнал суть.


p.s. надеюсь, что наш оффтоп не сильно мешает автору топика...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Математическая логика (Элементы теории множеств, Логика и исчисление высказываний) sash_ok.83 Фриланс 0 12.06.2012 20:43
Логика предикатов (мат логика 2 задачи) Deathcube Помощь студентам 0 27.02.2012 18:28
таблицы подстановок в дельфи(базы данных в дельфи) ManiagoZ БД в Delphi 0 15.05.2011 15:07
Логика evklid Помощь студентам 2 28.10.2010 12:51
Логика КоТэ LOvE YoU Паскаль, Turbo Pascal, PascalABC.NET 4 08.10.2010 23:29