Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#25

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 26. Mai 2008, 09:43
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat