Hitman: Danke für den Link! Habe das verzerrungsfreie Runden bisher nicht gekannt.
Hitman hat geschrieben:Beim Runden betrachtest du doch 9 Ziffern (1 bis 9, 0 ist ja schon rund). Davon ist 5 ungünstiger Weise genau die Mitte. Rundest du da nun immer auf, würdest du nur 4 von 9 abrunden - du hast von Abrunden zu Aufrunden also ein Verhältnis von 4 zu 5. Da sollte einleuchten, dass das eine Verzerrung darstellt.
Die Verzerrung gibt es aber auch beim unverzerrten Runden: Hier rundet man mit den Endungen 5,6,7,8,9,0,1,2,3,4,5 immer auf gerade Zahlen, mit den Endungen 6,7,8,9,0,1,2,3,4 (d.h. 2 weniger) auf ungerade Zahlen. D.h. es findet eine Verzerrung hin zu geraden Zahlen statt und dieses Problem ist somit durch die durchaus umständliche und wenig verbreitete "unverzerrte" Rundungsmethode NICHT gelöst. Offenbar haben beide Methoden ihre Nachteile, welche in Euren Beispielen sehr deutlich werden.
Hitman hat geschrieben:Dein Beispiel ist zudem ziemlich konstruiert - wann rundet man Cent-Beträge einfach weg?
Dies trifft aber auch auf dein Beispiel zu
... und weil wir alle schonmal dabei sind, möchte ich ein konstruiertes Beispiel nachlegen:
1,5 - 2,5 + 3,5 = 2,5
mathematisch ("unverzerrt") gerundet: 2 - 2 + 4 = 4
kaufmännisch gerundet: 2 - 3 + 4 = 3
Was würden die Dienstleister/Kreditinstitute/Händler/whatever dazu wohl sagen?
Das unverzerrte Runden bringt also genauso im konstruierten Spezialfall einen Vorteil, wie das kaufmännische Runden im konstruierten Spezialfall näher an der Wirklichkeit ist. ABER: Das kaufmännische Runden wird an den Schulen gelehrt, das unverzerrte Runden ist weitgehend unbekannt. Von welchem Verhalten würde wohl der Durchschnittsprogrammierer ausgehen, wenn er die round-Routine verwendet?