Mal ein grober Auszug aus der Hilfe:
Die Funktion gibt an, ob zwei Gleitkommawerte (annähernd) gleich sind.
SameValue(A, B, Epsilon) :Boolean
Beschreibung
Mit SameValue können Sie feststellen, ob zwei Gleitkommawerte gleich oder annähernd gleich sind.
A und B sind die zu vergleichenden Werte.
Epsilon ist die maximale Differenz, mit der A und B noch als gleich angesehen werden.
Wenn man dann noch ein bisschen im Math-unit kramt:
const
FuzzFactor = 1000;
ExtendedResolution = 1E-19 * FuzzFactor;
<PRE>
function SameValue(const A, B: Extended; Epsilon: Extended): Boolean;
begin
if Epsilon = 0 then
Epsilon := Max(Min(Abs(A), Abs(B)) * ExtendedResolution, ExtendedResolution);
if A > B then
Result := (A - B) <= Epsilon
else
Result := (B - A) <= Epsilon;
end;
</PRE>
Die Funktion ist bei der Rundung dafür da, ganze Zahlen mit round auch zu ganzen Zahlen zu machen, z.B 1.9999999999999999999999 zu 2,0. Sonst gibts beim Trunc dann 1 statt 2.
Grüße
Juli
Comment