Hi,
du hast hier immer noch einen Preis auf Zehntel-Cent angegeben. Und da wunderst du dich, dass du in der Summe drei Stellen[*] nach dem Komma erhältst?
Aber weder hat 21.951 3 Stellen nach dem Komma, noch 21.95 2 Stellen. Beide lassen sich als double nicht darstellen.
das ist richtig, aber schlaue Rundungs-Algorithmen sorgen dafür, dass der intern gespeicherte Wert von "ungefähr 21.95" dann tatsächlich als 21.95 angezeigt wird. Erst wenn mit diesen Werten Berechnungen durchgeführt werden, tritt der Rundungsfehler meist zutage. Und dann aber meist in Form von zehn oder mehr unerwartet auftauchenden Nachkommastellen, von denen typischerweise alle bis auf die letzte Nullen oder Neunen sind.
Trotzdem hatte ich Benj alias godzilla411 schon vor drei Tagen auf den vermeintlichen Fehler hingewiesen, der ohne den Unfug mit der Exponentenschreibweise vermutlich gar nicht aufgetaucht wäre. In seinem dort gezeigten Script führt er die Summierung an sich ja sogar schon mit Integers durch.
Deswegen sollte man bei sowas immer über toFixed gehen, bei Geld vielleicht sogar nur über 2 ganze Zahlen.
Das habe ich ihm im genannten Thread auch schon nahegelegt.
Ciao,
Martin
F: Was sagt die kleine Kerze zur großen Kerze?
A: Ich gehe heute nacht aus!
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(