Показать сообщение отдельно
  #13  
Старый 22.04.2017, 02:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А чего уж тут подробнее.
Имеет место проблема при прямом сравнении чисел с плавающей точкой, т.к. в следствии погрешности при расчете 2 действительных числа могут оказаться не равны с точки зрения компьютера. Соответсвенно, такие числа надо сравнивать через эпсилон.
Вот пример как надо это сравнивать:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  f1, f2 : double;
begin
  f1 := 1.3000000;
  f2 := 1.2999999;
  if abs(f1-f2) < 0.00001
  then ShowMessage('f1 and f2 are equal')
  else ShowMessage('f1 and f2 are not equal');
end;
Взято тут: https://edn.embarcadero.com/article/22507
Ответить с цитированием