Seine Funktion funktioniert richtig, aber deine Berechnung rechnet "falsch" => Rundungsfehler
Delphi-Quellcode:
var
x,y : Extended;
resx, resy: Extended;
begin
y := 17.325;
resy := RoundX(y, 2);
// ergibt 17.325 .... nein, ergibt 17,324999999999999998...
// (bzw. 17,324999999999999998265276524023 = 17,325 - 0,00000000000000000173472347597681)
x := ((275 - 27.5) / 100) * 7 ;
resx := RoundX(x, 2);
ShowMessage(FloatToStr(resx) + ' | ' + FloatToStr(resy) + ' | ' + FloatToStr(x - y) + ' = ' + BoolToStr(x = y, True));
end;
Zitat:
---------------------------
Project1
---------------------------
17,32 | 17,33 | -1,73472347597681E-18 = False
---------------------------
OK
---------------------------
Die 2.475, des Ergebnisses von
247.5 / 100
, läßt sich vermutlich binär nicht genau darstellen.