2017-07-16 6 views
1

Die CSApp sagt:Warum float's Rounding run-to-even verwenden?

„zu geraden Zahlen Rundungs ​​vermeidet diese statistischen Verzerrungen bei den meisten realen Situationen Es rundet nach oben etwa 50% der Zeit und abzurunden nach unten etwa 50% der Zeit..“

Und wie man es beweis?

+0

Ihr Benutzername macht mich schwindlig. Wenn Sie Deutsch verwenden möchten, tun Sie es richtig. – gnasher729

+0

Welche Sprache? Nicht jede Sprache wird standardmäßig abgerundet. Wie auch immer, das ist keine Frage zu einem bestimmten Problem. –

+0

@ gnasher729: Richtig. Sollte "Süden und das Gelöbnis des gefallenen Engels" sein, aber Benutzer hat wahrscheinlich keine Umlaute und nicht genug Platz für den vollen Titel.

Antwort

1

Runde nächste nach unten hat offensichtlich eine Verzerrung Rundung Ergebnisse nach unten. Round am nächsten hat offensichtlich eine Verzerrung der Ergebnisse. Wenn du am nächsten zur geraden Runde kommst, dann die Hälfte der Zeit, die du zusammenrundet, die Hälfte der Zeit, die du abrundet. Also ist die Voreingenommenheit weg. (Wichtig für Addition und Subtraktion, für Multiplikation tritt die Situation selten auf, und für Division oder Quadratwurzel passiert es überhaupt nicht).

Runde am nächsten zu hat sogar andere Vorteile. Nimm irgendein x, y, wo x + y nicht überläuft. Sei x '= (x + y) - y. x 'ist aufgrund von Rundungsfehlern nicht notwendigerweise dasselbe wie x. Aber dann sei x '' = (x '+ y) - y, und du bekommst x' '= x'. Bei der nächsten Runde nach unten oder oben kann es passieren, dass das Ergebnis langsam nach oben oder unten kriecht, wenn Sie dies wiederholen.