Simple types / Numbers / Double and Float

uses System.Math;

var
  A, B, Delta: Double;
  IsEqual1, IsEqual2, IsEqual3: Boolean;
begin
  A := 1.0;
  B := (0.3 * 3) + 0.1;

  //wrong way to compare
  IsEqual1 := A = B;
  //IsEqual1 is False

  //correct way to compare
  Delta := 1E-9;
  IsEqual2 := Abs(A - B) < Delta;
  //IsEqual2 is True

  //the same check from the RTL
  IsEqual3 := SameValue(A, B);
  //IsEqual3 is True

  WriteLn('isEqual1 is ', IsEqual1);
  WriteLn('isEqual2 is ', IsEqual2);
  WriteLn('isEqual3 is ', IsEqual3);
end.