Hallo,
führe dir bitte mal vor Augen, dass das 32bit-Fließkommaformat (IEEE binary32) gerade mal 23 Bits für die Mantisse vorsieht. Das entspricht in der dezimalen Darstellung nur 7 gültigen Stellen.
Beides ist nicht relevant, weil PHP mit "doppelter Genauigkeit" rechnet, also 64-Bit-Floats verwendet und 14 Stellen zur Verfügung hat.
das dachte ich mir schon - Javascript anscheinend auch, wie ein
alert(1e7+0.1)
zeigt. Würde die interne Rechnung auf single-precision float basieren, wäre das Ergebnis wieder 1E+07, weil der "Dynamikbereich" nicht mehr ausreicht, um die 0.1 dagegen noch darzustellen.
Wenn man also Beträge, wie sie beim Auto- oder Hauskauf durchaus auftreten, auf Cent genau erfassen will, versagt dieses Format schon.
Bei 7-stelligen Zahlen braucht es ungefähr auch eine 7-stellige Anzahl von Rechenschritten, um zu versagen
Nein, es braucht nur Zahlen, deren Größenordnung genügend weit auseinanderliegt. Nimm etwa eine Summe von 50'003 Euro und rechne unter Verwendung von 32bit-Floats die Märchensteuer drauf. Das geht gerade noch gut, du bekommst 59'503.57, aber damit ist auch der Genauigkeitsbereich dieser Zahlendarstellung nahezu ausgeschöpft. Jede weitere Rechenoperation mit diesem Wert könnte bereits einen Fehler auf der letzten Stelle erzeugen.
So long,
Martin
Das Gehirn ist schon eine tolle Sache: Es fängt ganz von allein an zu arbeiten, wenn man morgens aufsteht, und hört erst damit auf, wenn man in der Schule ankommt.
(alte Schülererkenntnis)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(