Показать сообщение отдельно
  #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));
Ответить с цитированием