Gerechnet wird über die FPU. Delphi übersetzt bloss deine Additionen und Multiplikationen in eine für den Chip verständliche Form.
Allerdings kann es vorkommen, dass bei nicht "symmetrischer" Übersetzung der Formeln die Terme nicht ganz gleichberechtigt gerundet werden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var D: Double; begin D := 0.2; ShowMessage(FloatToStr(D-0.2)); end; |
Wenn ich mich nicht täusche passiert das bei
Extended nicht; dort werden nämlich immer alle Zahlen zuerst in den Stack geladen, bevor gerechnet wird und somit geschieht die Rundung überall gleich.
Kann dir aber nicht garantieren, dass diese Theorie stimmt; sie basiert auf Beobachtung.