Autor Beitrag
ManuelGS
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 173

Win XP HE, Suse Linux
D6, D7, D2005 Personal
BeitragVerfasst: Sa 04.06.05 18:14 
ist das problem eigentlich nur bei delphi vorhanden, oder sind andere programmiersprachen "genauer"? ich find das nämlich auch recht nervig mit ungenauen werten zu arbeiten.

_________________
"Leben ist gänzlich Bühne und Spiel; so lerne denn spielen
und entsage dem Ernst - oder erdulde das Leid." - Palladas von Alexandria
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 04.06.05 18:43 
Das hat nichts mit der Programmiersparche zu tun, sondern damit, wie Fließkommazahlen intern abgebildet werden.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Sa 04.06.05 19:33 
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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
 D: Double;
begin
  D := 0.2;
  ShowMessage(FloatToStr(D-0.2)); // "1.10995197408204E-17"
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.