Zitat von
QuickAndDirty:
Wenn du zwei große Floats von einander abziehst kann schon im ersten Schritt ein echt interessantes Ergebnis bei rauskommen.
Was soll daran interessant sein (klappt übrigens auch schon mit zwei kleinen Zahlen, z.B. 0.1)? Das ist dann aber ein Darstellungsfehler. Der Rundungsfehler liegt immer innerhalb der Spezifikation für Floating Points (8-20 Stellen, je nach verwendetem Datentyp). Wir wollen hier nicht über die Eigenheiten von Floatingpointarithmetik und -Darstellung diskutieren (das wurde hier schon bis zum Erbrechen durchgekaut), aber wenn man weiss,
1. wo die Darstellungsfehler herkommen
2. was man überhaupt ausrechnet und
3. welche Genauigkeit man benötigt,
dann kann man Floatingpointarithmetik bestimmungsgemäß und fehlerfrei verwenden. Wer die o.g. Punkte nicht richtig zu beantworten weiss, der muss zur Nachhilfe: Was interessieren mich Fehler in der 10 Stelle, wenn ich -im physikalischen Umfeld- nie mehr als 8 signifikante Stellen anzeigen muss (Ein Fehler von 0,00001%, das ist kleiner als fast jede Messeinrichtung).
Im hier diskutierten Fall liegt die benötigte Genauigkeit bei genau einer Dezimalstelle bzw. 3-6 signifikanten Stellen. Und *das* schafft ein Double mit links, hier würde sogar ein Single ausreichen.
Nicht verwechseln:
Rundungsfehler und
Darstellungsfehler. Ersteres kommt bei Computerrechnungen im Zahlenraum der reelen Zahlen doch öfter vor, letzteres ist eine Eigenheit der Floatingpoint-Datentypen.