Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Falsche Ausgabe von Floatwerten

  Alt 30. Nov 2009, 19:08
Bei i=28 steht unter deinem Bruchstrich 1.303.977.169.932.777. 16 Stellen ist schon nahe an der Grenze dessen was ein Double noch genau darstellen kann. Du rennst hier in der Tat in das offene Messer der Floats: Ungenauigkeit bei extrem kleinen und großen Werten. Einzige Lösung hierzu: Die Rechnung so umstellen, dass keine so extremen Zwischenergebnisse mehr vorkommen, oder eine BigNum-Unit verwenden.

Edit: Der Windows Taschenrechner benutzt imho eine Art von BigNum Implementierung.

Edit2: Ich seh grad dass du ja auch noch aufsummierst. Da ist definitiv das Ende der Fahnenstange. Aber sowas von! Edit3: Okay, nicht die großen Werte, aber auch bei den sehr kleinen tritt das Problem ähnlich auf, nur eben auf der "anderen Seite" vom Komma. Ab einem gewissen Punkt addierst du im Wesentlichen Nullen, und auch das Weiterrechnen mit 6/sqrt(3)*s tut nicht beonders gut. Jede weitere Operationen auf grenzwertigen Werten macht das Ergebnis nur noch ungenauer.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat