Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 Beiträge
 
Delphi 12 Athens
 
#2

AW: kaufmännisch runden

  Alt 26. Nov 2013, 16:12
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Nov 2013 um 16:22 Uhr)
  Mit Zitat antworten Zitat