Einzelnen Beitrag anzeigen

mgero

Registriert seit: 26. Jun 2006
5 Beiträge
 
Delphi 6 Enterprise
 
#1

Rundungsfehler bei Float Addition/Subtraktion

  Alt 13. Jul 2006, 11:21
Hallo Zusammen,

Das Rundungsprobleme im Zusammenhang mit Float auftreten können, ist ja bekannt.
Normale Additionen oder Subtraktionen sollten jedoch kein Problem sein.

Mit Delphi 6 ergibt folgenden Operation mit Double nicht 0

Delphi-Quellcode:
var
  xDouble : Double;
begin
  xDouble := 0;
  xDouble := xDouble + 3743.8;
  xDouble := xDouble - 3743.8;
Verwendet man anstelle von Double Extended, ist das ganze noch merkwürdiger: Hier bekommt man 0, solange keine Datenbank mit TDatabase angesprochen wird, danach kommt der gleiche Fehler. Das bedeutet, das die gleiche Funktion nach dem ersten Datenbank- Connect ein anderes Ergebnis liefert als davor.

Natürlich kann ich einen Workaround basteln, z.B alle Werte Runden vor Prüfung auf 0,
mir gefällt jedoch nicht wenn das System so unzuverlässig rechnet.

Kennt jemand eine Lösung zum Problem, eventuell eine Compilerdirektive o.a.

Vielen Dank
  Mit Zitat antworten Zitat