Weiß zwar nicht, ob das wirklich eine relevante Information für dich ist, aber nach meinen Recherchen mindestens seit Delphi 6 (ja, ohne XE), also seit Mai 2001.
Das Epsilon kannst du als zweites Argument angeben, wenn gewünscht, ansonsten wird das jeweils passende nach Datentyp genommen:
Delphi-Quellcode:
const
FuzzFactor = 1000;
SingleResolution = 1E-7 * FuzzFactor;
DoubleResolution = 1E-15 * FuzzFactor;
{$IFDEF EXTENDEDIS10BYTES}
ExtendedResolution = 1E-19 * FuzzFactor;
{$ELSE EXTENDEDIS10BYTES}
ExtendedResolution = DoubleResolution;
{$ENDIF EXTENDEDIS10BYTES}
...
function IsZero(const A: Double; Epsilon: Double): Boolean;
begin
if Epsilon = 0 then
Epsilon := DoubleResolution;
Result := Abs(A) <= Epsilon;
end;