Цитата:
Сообщение от 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 и не построить график?