Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: 6.76609068141504e-318

  Alt 24. Aug 2022, 12:18
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;
  Mit Zitat antworten Zitat