Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.10.2019, 10:12
Remedies Remedies вне форума
Прохожий
 
Регистрация: 06.10.2019
Сообщения: 1
Версия Delphi: Delphi 10.3
Репутация: 10
Печаль Нерабочее сравнение в if

Дабы избежать лишних вычислений в цикле из-за погрешности (только относительно 0), делаю проверку abs(x)>step/1000 (step - приращение переменной, вводится с клавы), но она не пашет (если step/1000 запихнуть в отдельную переменную, та же история). Но если делать сравнение с числом, которому равно step/1000, всё прекрасно. Это какая-то особенность if или я не шарю совсем?
Код:
  readln(a, b, step); //Вводится (3, -2.7, -0.3)
  y:=0;
  x:=a;
  if (step<>0) and (((a>b) and (step<0)) or ((a<b) and (step>0))) then
  begin
   repeat
    if (abs(x)>step/10000) then
    begin
     y:=ln(exp(ln(x*x+pi)/3))+arctan(x/3)+exp(5/3)/x;
     writeln(x,'   ',y);
     x:=x+step;

    end
    else
    begin
      writeln('Error: division by 0');
      x:=x+step;

    end;

   until ((x>b) and (step>0)) or ((x<b) and (step<0));

Последний раз редактировалось Remedies, 06.10.2019 в 10:16.
Ответить с цитированием
  #2  
Старый 06.10.2019, 13:20
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Все работает...
Здесь step/10000 является константой и равняется -0,00003. x:=x+step у тебя стремится к минус бесконечности, а ты проверяешь модуль икс (abs(x)). А так как икс положительный, то условие срабатывает потому, что положительное число всегда больше отрицательного.
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:52.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter