Показать сообщение отдельно
  #15  
Старый 23.04.2017, 20:37
perekatipole perekatipole вне форума
Прохожий
 
Регистрация: 20.04.2017
Сообщения: 11
Версия Delphi: TDLite
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
А чего уж тут подробнее.
Имеет место проблема при прямом сравнении чисел с плавающей точкой, т.к. в следствии погрешности при расчете 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
тоесть,компьютер например может 0.999999 посчитать за 1 и не построить график?
Ответить с цитированием