Rundung

Aus besserwiki.de
Diagramme des Ergebnisses, yder Rundung x unter Verwendung verschiedener Methoden. Der Übersichtlichkeit halber sind die Graphen von ganzzahligen Werten aus verschoben y Werten dargestellt. Bewegen Sie in der SVG-Datei den Mauszeiger über eine Methode, um sie hervorzuheben, und klicken Sie in SMIL-fähigen Browsern darauf, um sie auszuwählen oder die Auswahl aufzuheben.

Runden bedeutet, eine Zahl durch einen Näherungswert zu ersetzen, der eine kürzere, einfachere oder eindeutigere Darstellung hat. Zum Beispiel wird $23,4476 durch $23,45, der Bruch 312/937 durch 1/3 oder der Ausdruck 2 durch 1,414 ersetzt.

Gerundet wird häufig, um einen Wert zu erhalten, der einfacher zu berichten und zu kommunizieren ist als das Original. Das Runden kann auch wichtig sein, um eine irreführend genaue Angabe einer berechneten Zahl, Messung oder Schätzung zu vermeiden; eine Menge, die als 123.456 berechnet wurde, von der aber bekannt ist, dass sie nur bis auf wenige hundert Einheiten genau ist, wird in der Regel besser als "etwa 123.500" angegeben.

Andererseits führt das Runden von exakten Zahlen zu Rundungsfehlern im berichteten Ergebnis. Rundungen sind bei vielen Berechnungen fast unvermeidlich - insbesondere bei der Division zweier Zahlen in der Ganzzahl- oder Festkommaarithmetik, bei der Berechnung mathematischer Funktionen wie Quadratwurzeln, Logarithmen und Sinus oder bei der Verwendung einer Gleitkommadarstellung mit einer festen Anzahl signifikanter Stellen. In einer Folge von Berechnungen häufen sich diese Rundungsfehler im Allgemeinen an und können in bestimmten, schlecht konditionierten Fällen das Ergebnis bedeutungslos machen.

Das genaue Runden von transzendentalen mathematischen Funktionen ist schwierig, weil die Anzahl der zusätzlichen Stellen, die berechnet werden müssen, um zu entscheiden, ob auf- oder abgerundet werden soll, nicht im Voraus bekannt ist. Dieses Problem ist bekannt als "das Dilemma des Tabellenmachers".

Das Runden hat viele Ähnlichkeiten mit der Quantisierung, die stattfindet, wenn physikalische Größen durch Zahlen oder digitale Signale kodiert werden müssen.

Ein wellenförmiges Gleichheitszeichen (: ungefähr gleich) wird manchmal verwendet, um die Rundung von exakten Zahlen anzuzeigen, z. B. 9,98 ≈ 10. Dieses Zeichen wurde von Alfred George Greenhill im Jahr 1892 eingeführt.

Zu den idealen Eigenschaften von Rundungsmethoden gehören:

  1. Die Rundung sollte durch eine Funktion erfolgen. Auf diese Weise bleibt die Ausgabe unverändert, wenn dieselbe Eingabe in verschiedenen Instanzen gerundet wird.
  2. Berechnungen, die mit Rundung durchgeführt werden, sollten denen ohne Rundung nahe kommen.
    • Als Ergebnis von (1) und (2) sollte die Ausgabe der Rundung nahe an der Eingabe liegen, oft so nahe wie möglich an einer bestimmten Metrik.
  3. Um als Rundung zu gelten, muss der Bereich eine Teilmenge des Bereichs sein. Ein klassischer Bereich sind die ganzen Zahlen, Z.
  4. Bei der Rundung sollten Symmetrien, die bereits zwischen dem Bereich und dem Bereich bestehen, erhalten bleiben. Bei endlicher Genauigkeit (oder einem diskreten Bereich) bedeutet dies, dass Verzerrungen beseitigt werden.
  5. Eine Rundungsmethode sollte in der Informatik oder in der menschlichen Arithmetik von Nutzen sein, wo endliche Genauigkeit verwendet wird und Geschwindigkeit eine Rolle spielt.

Da es für eine Methode in der Regel nicht möglich ist, alle idealen Eigenschaften zu erfüllen, gibt es viele verschiedene Rundungsmethoden.

In der Regel ist die Rundung idempotent, d. h., wenn eine Zahl einmal gerundet wurde, ändert sich ihr Wert durch erneutes Runden nicht mehr. Rundungsfunktionen sind außerdem monoton, d. h. das Runden einer größeren Zahl ergibt das gleiche oder ein größeres Ergebnis als das Runden einer kleineren Zahl.

Die Rundung oder auch das Runden ist die Ersetzung einer Zahl durch einen Näherungswert, der gewünschte Eigenschaften hat, welche der ursprünglichen Zahl fehlen.

Man rundet, um

  • Zahlen mit Nachkommastellen leichter lesbar zu machen;
  • die beschränkte Anzahl darstellbarer Stellen einzuhalten (auch bei Gleitkommazahlen);
  • den Wert irrationaler Zahlen wenigstens ungefähr anzugeben, etwa der Kreiszahl ;
  • um der Genauigkeit eines Ergebnisses Rechnung zu tragen und dadurch Scheingenauigkeit zu vermeiden; dafür werden nicht nur Nachkommastellen gerundet, sondern auch große Ganzzahlen ohne Verkürzung der Darstellung. Zum Beispiel rundet die Bundesagentur für Arbeit die errechnete Anzahl der Arbeitslosen auf volle 100. Hier bleibt die Anzahl der dargestellten Ziffern unverändert, aber die letzten zwei Stellen werden als nicht signifikant angedeutet;
  • eine gegebene Zahl an die darstellbare oder zu benutzende Einheit anzupassen. Beispiele sind beim Bargeld die kleinste Münze, beim Buchgeld die kleinste rechnerische Währungseinheit, bei Küchenwaagen ganze Gramm, bei Sitzzuteilungsverfahren für die Verhältniswahl ganze Mandate.

Wird eine positive Zahl vergrößert, so spricht man von „aufrunden“; wird sie verkleinert, von „abrunden“. Bei negativen Zahlen sind diese Wörter doppeldeutig. Werden Nachkommastellen nur weggelassen, spricht man von „abschneiden“.

Arten des Rundens

Typische Rundungsprobleme sind:

Rundungsproblem Beispiel Eingabe Ergebnis Rundungs-Kriterium
Approximation einer irrationalen Zahl durch einen Bruch π 22 / 7 1-Stelle-Nenner
Approximation einer rationalen Zahl durch einen anderen Bruch mit kleinerem Zähler und Nenner 399 / 941 3 / 7 1-Stelle-Nenner
Annäherung eines Bruchs, der eine periodische Dezimalentwicklung hat, durch einen endlichen Dezimalbruch 5 / 3 1.6667 4 Dezimalstellen
Annäherung einer gebrochenen Dezimalzahl durch eine Zahl mit weniger Ziffern 2.1784 2.18 2 Dezimalstellen
Annäherung einer dezimalen ganzen Zahl durch eine ganze Zahl mit mehr nachgestellten Nullen 23,217 23,200 3 signifikante Stellen
Annäherung an eine große Dezimalzahl mit wissenschaftlicher Notation 300,999,999 3.01 × 108 3 signifikante Stellen
Annäherung an einen Wert durch ein Vielfaches eines bestimmten Betrags 48.2 45 Vielfaches von 15
Runden jeder einzelnen einer endlichen Menge von reellen Zahlen (meist Brüche) auf eine ganze Zahl (manchmal die zweitnächste ganze Zahl), so dass die Summe der gerundeten Zahlen gleich der gerundeten Summe der Zahlen ist (benötigt z. B. [1] für die Aufteilung von Sitzen, z. B. durch die Methode des größten Rests, siehe Mathematik der Aufteilung, und [2] für die Aufteilung der gesamten Mehrwertsteuer einer Rechnung auf ihre Posten) {3/12, 4/12, 5/12} {0, 0, 1} Die Summe der gerundeten Elemente entspricht der gerundeten Summe der Elemente

Beim summenerhaltenden Runden werden die Summanden so gerundet, dass deren Summe gleich der gerundeten Summe der Summanden ist. Dabei kann es erforderlich sein, manchen Summanden vom nächstgelegenen gerundeten Wert weg auf den gegenüber gelegenen Wert zu runden.

Wichtige Anwendungen sind die Sitzzuteilung bei der Verhältniswahl und die Aufteilung der gesamten Mehrwertsteuer in einer Rechnung auf deren einzelnen Posten.

Gründlich erforscht ist der Fall, dass alle Summanden positiv sind, siehe Sitzzuteilungsverfahren.

Rundung auf ganze Zahlen

Die einfachste Form des Rundens besteht darin, eine beliebige Zahl durch eine ganze Zahl zu ersetzen. Alle folgenden Rundungsarten sind konkrete Implementierungen einer abstrakten Prozedur mit einem Argument "round()". Es handelt sich um echte Funktionen (mit Ausnahme derjenigen, die Zufälligkeit verwenden).

Gerichtete Rundung auf eine ganze Zahl

Diese vier Methoden werden als gerichtete Rundung bezeichnet, da die Verschiebungen von der ursprünglichen Zahl x auf den gerundeten Wert y alle auf denselben Grenzwert (0, +∞ oder -∞) zu oder von ihm weg gerichtet sind. Die gerichtete Rundung wird in der Intervallarithmetik verwendet und ist häufig bei Finanzberechnungen erforderlich.

Wenn x positiv ist, ist Abrunden dasselbe wie Abrunden auf Null und Aufrunden ist dasselbe wie Abrunden von Null. Wenn x negativ ist, ist das Abrunden dasselbe wie das Abrunden von Null und das Aufrunden dasselbe wie das Aufrunden von Null. In jedem Fall, wenn x eine ganze Zahl ist, y ist einfach x.

Wenn viele Berechnungen nacheinander durchgeführt werden, kann die Wahl der Rundungsmethode einen sehr großen Einfluss auf das Ergebnis haben. Ein berühmtes Beispiel ist ein neuer Index, der 1982 von der Vancouver Stock Exchange eingeführt wurde. Er wurde ursprünglich auf 1000.000 (mit drei Dezimalstellen Genauigkeit) festgesetzt und war nach 22 Monaten auf etwa 520 gefallen - während die Aktienkurse in dieser Zeit im Allgemeinen gestiegen waren. Das Problem wurde dadurch verursacht, dass der Index täglich tausende Male neu berechnet und dabei immer auf drei Dezimalstellen abgerundet wurde, so dass sich die Rundungsfehler häuften. Eine Neuberechnung mit besserer Rundung ergab am Ende desselben Zeitraums einen Indexwert von 1098,892.

In den folgenden Beispielen bezieht sich sgn(x) auf die Vorzeichenfunktion, die auf die ursprüngliche Zahl x angewendet wird.

Abrunden

  • Rundung nach unten (oder nach unten, oder gegen negative Unendlichkeit): y ist die größte ganze Zahl, die nicht größer ist als x.

Beispiel: 23,7 wird auf 23 gerundet, und -23,2 wird auf -24 gerundet.

Aufrunden

  • aufrunden (oder die Obergrenze nehmen, oder auf positive Unendlichkeit runden): y ist die kleinste ganze Zahl, die nicht kleiner ist als x.

Beispiel: 23,2 wird auf 24 gerundet, und -23,7 wird auf -23 gerundet.

Rundung gegen Null

  • Rundung gegen Null (oder Abschneiden oder Abrunden von Unendlich): y ist die Ganzzahl, die am nächsten an x am nächsten liegt, so dass sie zwischen 0 und x (eingeschlossen) liegt; d.h. y ist der ganzzahlige Teil von xohne seine Nachkommastellen.

Zum Beispiel wird 23,7 zu 23 gerundet, und -23,7 wird zu -23 gerundet.

Abrunden von Null

  • Rundung von Null weg (oder Rundung gegen Unendlich): y ist die ganze Zahl, die am nächsten bei 0 liegt (oder gleichwertig bei x), so dass x zwischen 0 und y liegt (eingeschlossen).

Zum Beispiel wird 23,2 auf 24 gerundet, und -23,2 wird auf -24 gerundet.

Runden auf die nächstliegende ganze Zahl

Die Rundung einer Zahl x auf die nächste ganze Zahl erfordert eine Gleichheitsregel für die Fälle, in denen x genau in der Mitte zwischen zwei ganzen Zahlen liegt, d. h. wenn der Bruchteil von x genau 0,5 ist.

Ohne die 0,5 Bruchteile wären die Rundungsfehler, die durch das Runden auf die nächste Zahl entstehen, symmetrisch: Für jeden Bruch, der abgerundet wird (z. B. 0,268), gibt es einen komplementären Bruch (nämlich 0,732), der um den gleichen Betrag aufgerundet wird.

Bei der Rundung einer großen Menge von Festkommazahlen mit gleichmäßig verteilten Nachkommastellen würden sich die Rundungsfehler bei allen Werten, mit Ausnahme derjenigen mit 0,5 Nachkommastellen, statistisch ausgleichen. Das bedeutet, dass der erwartete (durchschnittliche) Wert der gerundeten Zahlen gleich dem erwarteten Wert der ursprünglichen Zahlen ist, wenn Zahlen mit einem Bruchteil von 0,5 aus der Menge entfernt werden.

In der Praxis werden in der Regel Fließkommazahlen verwendet, die noch mehr rechnerische Feinheiten aufweisen, da sie nicht gleichmäßig verteilt sind.

Die Hälfte aufrunden

Die folgende Gleichheitsregel, das so genannte Aufrunden auf die Hälfte (oder Abrunden auf positive Unendlichkeit), ist in vielen Disziplinen weit verbreitet. Das heißt, halbe Werte von x werden immer aufgerundet.

  • Wenn der Bruchteil von x genau 0,5 ist, dann y = x + 0.5

Beispielsweise wird 23,5 auf 24 gerundet, und -23,5 wird auf -23 gerundet.

Einige Programmiersprachen (z. B. Java, Python) definieren hier jedoch ihr Aufrunden als Abrunden der Hälfte von Null.

Bei dieser Methode muss nur eine Ziffer geprüft werden, um die Rundungsrichtung im Zweierkomplement und ähnlichen Darstellungen zu bestimmen.

Halb abrunden

Im Gegensatz zum häufigeren Aufrunden kann man auch das Abrunden auf halber Höhe (oder das Abrunden auf negative Unendlichkeit) verwenden.

  • Wenn der Bruchteil von x genau 0,5 ist, dann y = x − 0.5

Beispielsweise wird 23,5 zu 23 gerundet, und -23,5 wird zu -24 gerundet.

Einige Programmiersprachen (z. B. Java, Python) definieren ihre Abrundung jedoch als Abrundung gegen Null.

Die Hälfte gegen Null runden

Man kann auch die Hälfte gegen Null abrunden (oder die Hälfte von der Unendlichkeit weg), im Gegensatz zum herkömmlichen Runden der Hälfte von Null weg.

  • Wenn der Bruchteil von x genau 0,5 ist, dann y = x - 0,5 wenn x positiv ist, und y = x + 0,5, wenn x negativ ist.

Zum Beispiel wird 23,5 zu 23 gerundet und -23,5 zu -23 gerundet.

Diese Methode behandelt positive und negative Werte symmetrisch und ist daher frei von einer allgemeinen positiven/negativen Verzerrung, wenn die ursprünglichen Zahlen mit gleicher Wahrscheinlichkeit positiv oder negativ sind. Es besteht jedoch immer noch eine Verzerrung in Richtung Null.

Die Hälfte von der Null weg runden

Die andere häufig gelehrte und angewandte Methode zum Ausgleich von Unentschieden ist das Abrunden der Hälfte von Null (oder das Abrunden der Hälfte in Richtung Unendlichkeit), nämlich:

  • Wenn der Bruchteil von x genau 0,5 ist, dann y = x + 0,5 wenn x positiv ist, und y = x - 0,5 wenn x negativ ist.

Zum Beispiel wird 23,5 auf 24 gerundet, und -23,5 wird auf -24 gerundet.

Dies kann bei Binärrechnern effizienter sein, da nur das erste ausgelassene Bit berücksichtigt werden muss, um festzustellen, ob aufgerundet (bei einer 1) oder abgerundet (bei einer 0) wird. Dies ist eine Methode, die aufgrund ihrer Einfachheit beim Runden auf signifikante Zahlen verwendet wird.

Diese Methode, die auch als kaufmännische Rundung bezeichnet wird, behandelt positive und negative Werte symmetrisch und ist daher frei von einer positiven/negativen Verzerrung, wenn die ursprünglichen Zahlen mit gleicher Wahrscheinlichkeit positiv oder negativ sind. Es gibt jedoch immer noch eine Verzerrung weg von Null.

Sie wird häufig für Währungsumrechnungen und Preisrundungen verwendet (wenn der Betrag zunächst in die kleinste signifikante Unterteilung der Währung umgerechnet wird, z. B. Cent eines Euro), da sie einfach zu erklären ist, indem nur die erste Nachkommastelle berücksichtigt wird, unabhängig von zusätzlichen Präzisionsziffern oder dem Vorzeichen des Betrags (für eine strikte Gleichwertigkeit zwischen dem Zahlenden und dem Empfänger des Betrags).

Runde die Hälfte auf gerade

Eine Gleichheitsregel ohne positive/negative Verzerrung und ohne Verzerrung zu/von Null ist das Runden der Hälfte auf gerade. Nach dieser Konvention gilt: Wenn der Bruchteil von x 0,5 ist, dann ist y die gerade ganze Zahl, die am nächsten an x. So wird z. B. +23,5 zu +24, ebenso wie +24,5; -23,5 wird jedoch zu -24, ebenso wie -24,5. Diese Funktion minimiert den erwarteten Fehler beim Summieren über gerundete Zahlen, auch wenn die Eingaben überwiegend positiv oder überwiegend negativ sind, vorausgesetzt, sie sind weder überwiegend gerade noch überwiegend ungerade.

Diese Variante der Rundungsmethode wird auch als konvergente Rundung, statistische Rundung, holländische Rundung, Gauß-Rundung, ungerade-gerade Rundung oder Bankrundung bezeichnet.

Dies ist der Standard-Rundungsmodus, der bei IEEE 754-Operationen für Ergebnisse in binären Fließkommaformaten verwendet wird, und der anspruchsvollere Modus, der beim Runden auf signifikante Zahlen verwendet wird.

Durch die Eliminierung von Verzerrungen führt die wiederholte Addition oder Subtraktion unabhängiger Zahlen, wie bei einem eindimensionalen Random Walk, zu einem gerundeten Ergebnis mit einem Fehler, der nicht linear, sondern proportional zur Quadratwurzel der Anzahl der Operationen wächst.

Diese Regel verzerrt jedoch die Verteilung, indem sie die Wahrscheinlichkeit der geraden Zahlen im Verhältnis zu den ungeraden erhöht. In der Regel ist dies weniger wichtig als die Verzerrungen, die durch diese Methode beseitigt werden.

Halbe auf ungerade runden

Eine ähnliche Entscheidungsregel wie das Abrunden der Hälfte auf gerade ist das Abrunden der Hälfte auf ungerade. Bei diesem Ansatz wird, wenn der Bruchteil von x 0,5 ist, dann ist y die ungerade ganze Zahl ist, die am nächsten an x. So wird z. B. +23,5 zu +23, ebenso wie +22,5; während -23,5 zu -23 wird, ebenso wie -22,5.

Diese Methode ist auch frei von positiven/negativen Verzerrungen und Verzerrungen gegen/von Null, sofern die zu rundenden Zahlen weder überwiegend gerade noch überwiegend ungerade sind. Sie hat auch die Eigenschaft, die ursprüngliche Verteilung zu verzerren, da sie die Wahrscheinlichkeit der Ungeraden gegenüber den Geraden erhöht.

Diese Variante wird bei Berechnungen fast nie verwendet, außer in Situationen, in denen man vermeiden möchte, die Skala von Fließkommazahlen, die einen begrenzten Exponentenbereich haben, zu vergrößern. Beim Runden auf halb gerade würde eine nicht unendliche Zahl auf unendlich gerundet, und eine kleine denormalen Wert würde auf einen normalen Nicht-Null-Wert gerundet. Dieser Modus bevorzugt die Beibehaltung der bestehenden Skala von Gleichheitszahlen und vermeidet bei Zahlensystemen mit geradem Radix (wie Binär- und Dezimalzahlen) Ergebnisse außerhalb des Bereichs, wenn dies möglich ist.

Rundung zur Vorbereitung auf eine kürzere Genauigkeit

Dieser Rundungsmodus (RPSP in diesem Kapitel) wird verwendet, um ein falsches Ergebnis bei doppelter (einschließlich mehrfacher) Rundung zu vermeiden. Mit diesem Rundungsmodus kann man ein falsches Ergebnis nach doppelter Rundung vermeiden, wenn alle Rundungen außer der letzten mit RPSP durchgeführt werden und nur die letzte Rundung den extern angeforderten Modus verwendet.

Wenn bei der Dezimalarithmetik die Wahl zwischen Zahlen mit der kleinsten signifikanten Ziffer 0 oder 1, 4 oder 5, 5 oder 6, 9 oder 0 besteht, dann ist die von 0 oder 5 verschiedene Ziffer zu wählen; andernfalls ist die Wahl willkürlich. IBM legt fest, dass im letzteren Fall die Ziffer mit dem kleineren Wert zu wählen ist. RPSP kann mit einem Schritt zwischen zwei aufeinanderfolgenden Rundungen angewendet werden, der so klein ist wie eine einzelne Ziffer (z. B. kann eine Rundung auf 1/10 nach einer Rundung auf 1/100 erfolgen). Beispiel: Bei der Rundung auf eine ganze Zahl,

  • 20,0 wird auf 20 gerundet;
  • 20,01, 20,1, 20,9, 20,99, 21, 21,01, 21,9, 21,99 werden auf 21 gerundet;
  • 22,0, 22,1, 22,9, 22,99 werden auf 22 gerundet;
  • 24,0, 24,1, 24,9, 24,99 werden auf 24 gerundet;
  • 25,0 wird auf 25 gerundet;
  • 25,01, 25,1 werden auf 26 gerundet.

Im Beispiel aus dem Abschnitt "Doppeltes Runden" ergibt die Rundung von 9,46 auf eine Dezimalstelle 9,4, die Rundung auf eine ganze Zahl ergibt wiederum 9.

Bei der binären Arithmetik erfolgt die Rundung als "Runden auf ungerade" (nicht zu verwechseln mit "Runden auf halbe Zahlen"). Zum Beispiel beim Runden auf 1/4:

  • x == 2,0 => Ergebnis ist 2
  • 2,0 < x < 2,5 => Ergebnis ist 2,25
  • x == 2,5 => Ergebnis ist 2,5
  • 2,5 < x < 3,0 => Ergebnis ist 2,75
  • x == 3,0 => Ergebnis ist 3,0

Um korrekte Ergebnisse zu erhalten, muss RPSP mit einem Schritt von mindestens 2 Binärziffern angewendet werden, da sonst ein falsches Ergebnis erscheinen kann. Zum Beispiel,

  • 3,125 RPSP bis 1/4 => Ergebnis ist 3,25
  • 3,25 RPSP zu 1/2 => Ergebnis ist 3,5
  • 3,5 RPSP auf 1 aufrunden => Ergebnis ist 4 (falsch)

Wenn der Schritt 2 Bits oder mehr beträgt, ergibt RPSP 3,25, was wiederum durch Abrunden auf eine ganze Zahl zu 3 führt.

RPSP ist in Hardware in IBM zSeries und pSeries implementiert.

Zufällige Rundung auf eine ganze Zahl

Abwechselndes Tie-Breaking

Eine Methode, die etwas undurchsichtiger ist als die meisten anderen, besteht darin, bei der Rundung einer Zahl mit 0,5 Nachkommastellen die Richtung zu wechseln. Alle anderen Zahlen werden auf die nächstliegende ganze Zahl gerundet.

  • Immer wenn der Bruchteil 0,5 ist, wird abwechselnd auf- oder abgerundet: beim ersten Auftreten eines 0,5-Bruchteils wird aufgerundet, beim zweiten Auftreten abgerundet usw. Alternativ kann die Rundung des ersten 0,5er-Bruchteils auch durch einen Zufallswert bestimmt werden. "Auf" und "Ab" können zwei beliebige Rundungsmethoden sein, die einander entgegengesetzt sind - in Richtung und weg von positiver Unendlichkeit oder in Richtung und weg von Null.

Wenn das Auftreten von 0,5 Nachkommastellen deutlich häufiger vorkommt als ein Neustart des "Zählens", dann ist es effektiv verzerrungsfrei. Mit einer garantierten Nullverzerrung ist es nützlich, wenn die Zahlen summiert oder gemittelt werden sollen.

Zufälliges Brechen von Gleichständen

  • Wenn der gebrochene Teil von x 0,5 ist, wählen Sie y zufällig zwischen x + 0,5 und x - 0,5, mit gleicher Wahrscheinlichkeit. Alle anderen werden auf die nächstliegende ganze Zahl gerundet.

Wie das Abrunden auf gerade und das Abrunden auf ungerade Werte ist diese Regel im Wesentlichen frei von Verzerrungen, aber sie ist auch fair zwischen geraden und ungeraden y Werten. Ein Vorteil gegenüber der alternativen Gleichheitsentscheidung besteht darin, dass die letzte Rundungsrichtung für den 0,5er Bruchteil nicht "gemerkt" werden muss.

Stochastische Rundung

Das Runden auf die nächstgelegene ganze Zahl bei negativem Unendlichkeitswert und die nächstgelegene ganze Zahl bei positivem Unendlichkeitswert mit einer von der Nähe abhängigen Wahrscheinlichkeit wird als stochastisches Runden bezeichnet und führt im Durchschnitt zu einem unverzerrten Ergebnis.

Zum Beispiel würde 1,6 mit einer Wahrscheinlichkeit von 0,4 auf 1 und mit einer Wahrscheinlichkeit von 0,6 auf 2 gerundet werden.

Die stochastische Rundung kann auf eine Weise genau sein, wie es eine Rundungsfunktion niemals sein kann. Nehmen wir zum Beispiel an, man beginnt mit 0 und addiert hundertmal 0,3 dazu, wobei die laufende Summe zwischen jeder Addition gerundet wird. Mit normaler Rundung wäre das Ergebnis 0, aber mit stochastischer Rundung wäre das erwartete Ergebnis 30, also der gleiche Wert wie ohne Rundung. Dies kann beim maschinellen Lernen nützlich sein, wenn beim Training iterativ mit niedriger Genauigkeit gerechnet wird. Die stochastische Rundung ist auch eine Möglichkeit, 1-dimensionales Dithering zu erreichen.

Vergleich von Ansätzen zur Rundung auf eine ganze Zahl

Wert Funktionale Methoden Randomisierte Methoden
Gezielte Rundung Runden auf den nächstliegenden Wert Runden zur Vorbereitung auf kürzere Genauigkeit Abwechselndes Tie-Break Zufälliges Tie-Break Stochastisch
Abwärts
(gegen -)
Aufwärts
(in Richtung +)
In Richtung 0 Von 0 weg Halb abwärts
(gegen -)
Halb aufwärts
(in Richtung +)
Halb in Richtung 0 Halb weg von 0 Halb nach gerade Halb zu ungerade Durchschnitt SD Durchschnitt SD Durchschnitt SD
+1.8 +1 +2 +1 +2 +2 +2 +2 +2 +2 +2 +1 +2 0 +2 0 +1.8 0.04
+1.5 +1 +1 +1 +1.505 0 +1.5 0.05 +1.5 0.05
+1.2 +1 +1 +1 +1 0 +1 0 +1.2 0.04
+0.8 0 +1 0 +1 +0.8 0.04
+0.5 0 0 0 +0.505 0 +0.5 0.05 +0.5 0.05
+0.2 0 0 0 0 0 0 0 +0.2 0.04
−0.2 −1 0 −1 −1 −0.2 0.04
−0.5 −1 −1 −1 −0.495 0 −0.5 0.05 −0.5 0.05
−0.8 −1 −1 −1 −1 0 −1 0 −0.8 0.04
−1.2 −2 −1 −1 −2 −1.2 0.04
−1.5 −2 −2 −2 −1.495 0 −1.5 0.05 −1.5 0.05
−1.8 −2 −2 −2 −2 0 −2 0 −1.8 0.04

Rundung auf andere Werte

Rundung auf ein bestimmtes Vielfaches

Die gebräuchlichste Art des Rundens ist das Runden auf eine ganze Zahl oder, allgemeiner, auf ein ganzzahliges Vielfaches einer bestimmten Schrittweite - z. B. das Runden auf ganze Zehntelsekunden, Hundertstel eines Dollars, auf ganze Vielfache von 1/2 oder 1/8 Zoll, auf ganze Dutzend- oder Tausenderwerte, usw.

Im Allgemeinen ist das Runden einer Zahl x auf ein Vielfaches eines bestimmten positiven Wertes m die folgenden Schritte nach sich:

Zum Beispiel, Rundung x = 2,1784 Dollar auf ganze Cents (d. h. auf ein Vielfaches von 0,01) bedeutet, dass 2,1784 / 0,01 = 217,84 berechnet wird, dann auf 218 gerundet wird und schließlich 218 × 0,01 = 2,18 berechnet wird.

Beim Runden auf eine bestimmte Anzahl signifikanter Ziffern hängt die Schrittweite m von der Größe der zu rundenden Zahl (oder des gerundeten Ergebnisses) ab.

Das Inkrement m ist normalerweise ein endlicher Bruch in dem Zahlensystem, das zur Darstellung der Zahlen verwendet wird. Für die Darstellung beim Menschen bedeutet dies in der Regel das Dezimalsystem (d. h., m ist eine ganze Zahl mal eine Potenz von 10, wie 1/1000 oder 25/100). Für Zwischenwerte, die in digitalen Computern gespeichert werden, wird oft das binäre Zahlensystem verwendet (m ist eine ganze Zahl mal eine Potenz von 2).

Die abstrakte Ein-Argument-Funktion "round()", die aus einem beliebigen reellen Wert eine ganze Zahl liefert, hat mindestens ein Dutzend verschiedene konkrete Definitionen, die im Abschnitt Runden auf ganze Zahlen vorgestellt werden. Die abstrakte Zwei-Argument-Funktion "roundToMultiple()" wird hier formal definiert, aber in vielen Fällen wird sie mit dem impliziten Wert m = 1 für das Inkrement verwendet und reduziert sich dann auf die äquivalente abstrakte Funktion mit einem Argument, die ebenfalls das gleiche Dutzend konkreter Definitionen aufweist.

Logarithmische Rundung

Rundung auf eine bestimmte Potenz

Das Runden auf eine bestimmte Potenz unterscheidet sich stark vom Runden auf ein bestimmtes Vielfaches; zum Beispiel ist es in der Informatik üblich, eine Zahl auf eine ganze Potenz von 2 zu runden. Die Schritte zum Runden einer positiven Zahl sind im Allgemeinen x auf eine Potenz einer positiven Zahl b ungleich 1, sind:

Viele der Vorbehalte, die für das Runden auf ein Vielfaches gelten, gelten auch für das Runden auf eine Potenz.

Skalierte Rundung

Diese Art der Rundung, die auch als Rundung auf eine logarithmische Skala bezeichnet wird, ist eine Variante der Rundung auf eine bestimmte Potenz. Beim Runden auf einer logarithmischen Skala wird der Logarithmus des Betrages genommen und auf den nächstliegenden Wert auf der logarithmischen Skala gerundet.

Zum Beispiel werden Widerstände mit Vorzugszahlen auf einer logarithmischen Skala geliefert. Insbesondere werden Widerstände mit einer Genauigkeit von 10 % mit den Nennwerten 100, 120, 150, 180, 220 usw. geliefert, die auf Vielfache von 10 gerundet sind (Serie E12). Wenn eine Berechnung ergibt, dass ein Widerstand von 165 Ohm erforderlich ist, dann ist log(150) = 2,176, log(165) = 2,217 und log(180) = 2,255. Der Logarithmus von 165 liegt näher am Logarithmus von 180, daher wäre ein 180-Ohm-Widerstand die erste Wahl, wenn es keine anderen Überlegungen gibt.

Ob ein Wert x ∈ (a, b) rundet auf a oder b abhängt, hängt davon ab, ob der quadrierte Wert x2 größer oder kleiner als das Produkt ab ist. Der Wert 165 rundet im Beispiel der Widerstände auf 180, weil 1652 = 27225 größer ist als 150 × 180 = 27000.

Fließkomma-Rundung

In der Fließkommaarithmetik zielt die Rundung darauf ab, einen gegebenen Wert x in einen Wert y mit einer bestimmten Anzahl von signifikanten Ziffern zu machen. Mit anderen Worten, y sollte ein Vielfaches einer Zahl sein m sein, die von der Größe von x. Die Zahl m ist eine Potenz der Basis (normalerweise 2 oder 10) der Gleitkommadarstellung.

Abgesehen von diesem Detail gelten alle oben besprochenen Rundungsvarianten auch für die Rundung von Fließkommazahlen. Der Algorithmus für eine solche Rundung wird im obigen Abschnitt Skalierte Rundung vorgestellt, allerdings mit einem konstanten Skalierungsfaktor s = 1, und einer ganzzahligen Basis b > 1.

In den Fällen, in denen das gerundete Ergebnis überlaufen würde, ist das Ergebnis für eine gerichtete Rundung entweder die entsprechende vorzeichenbehaftete Unendlichkeit, wenn "von Null weggerundet" wird, oder die höchste darstellbare positive endliche Zahl (oder die niedrigste darstellbare negative endliche Zahl, wenn x negativ ist), wenn "gegen Null gerundet" wird. Das Ergebnis eines Überlaufs für den üblichen Fall des Rundens auf die nächste Zahl ist immer die entsprechende Unendlichkeit.

Abrunden auf einen einfachen Bruch

In manchen Kontexten ist es wünschenswert, eine gegebene Zahl zu runden x auf einen "einfachen" Bruch zu runden, d. h. auf den nächstliegenden Bruch y = m/n dessen Zähler m und Nenner n ein bestimmtes Maximum nicht überschreiten. Dieses Problem unterscheidet sich deutlich von dem des Rundens eines Wertes auf eine bestimmte Anzahl von Dezimal- oder Binärstellen oder auf ein Vielfaches einer bestimmten Einheit m. Dieses Problem ist verwandt mit Farey-Folgen, dem Stern-Brocot-Baum und fortgesetzten Brüchen.

Rundung auf einen verfügbaren Wert

Fertiges Holz, Schreibpapier, Kondensatoren und viele andere Produkte werden in der Regel nur in einigen wenigen Standardgrößen verkauft.

Viele Konstruktionsverfahren beschreiben, wie man einen ungefähren Wert berechnet und dann auf eine Standardgröße "rundet", indem man Formulierungen wie "auf den nächsten Standardwert abrunden", "auf den nächsten Standardwert aufrunden" oder "auf den nächsten Standardwert runden" verwendet.

Wenn eine Reihe von Vorzugswerten auf einer logarithmischen Skala gleichmäßig verteilt ist, kann die Wahl des Vorzugswerts, der einem bestimmten Wert am nächsten liegt, als eine Form des skalierten Rundens angesehen werden. Solche gerundeten Werte können direkt berechnet werden.

Rundung in anderen Zusammenhängen

Dithering und Fehlerdiffusion

Bei der Digitalisierung von kontinuierlichen Signalen, wie z. B. Schallwellen, ist der Gesamteffekt einer Reihe von Messungen wichtiger als die Genauigkeit jeder einzelnen Messung. Unter diesen Umständen werden normalerweise Dithering und eine verwandte Technik, die Fehlerdiffusion, eingesetzt. Eine verwandte Technik, die Pulsweitenmodulation, wird verwendet, um eine analoge Ausgabe von einem Trägheitsgerät zu erhalten, indem die Leistung schnell mit einem variablen Tastverhältnis gepulst wird.

Die Fehlerdiffusion versucht sicherzustellen, dass der Fehler im Durchschnitt minimiert wird. Bei einer sanften Steigung von eins bis null wäre die Ausgabe für die ersten paar Terme null, bis die Summe des Fehlers und des aktuellen Werts größer als 0,5 wird. In diesem Fall wird eine 1 ausgegeben und die Differenz vom bisherigen Fehler subtrahiert. Das Floyd-Steinberg-Dithering ist ein beliebtes Fehlerdiffusionsverfahren bei der Digitalisierung von Bildern.

Nehmen wir als eindimensionales Beispiel an, dass die Zahlen 0,9677, 0,9204, 0,7451 und 0,3091 nacheinander auftreten und jeweils auf ein Vielfaches von 0,01 gerundet werden sollen. In diesem Fall werden die kumulierten Summen 0,9677, 1,8881 = 0,9677 + 0,9204, 2,6332 = 0,9677 + 0,9204 + 0,7451 und 2,9423 = 0,9677 + 0,9204 + 0,7451 + 0,3091 jeweils auf ein Vielfaches von 0,01 gerundet: 0,97, 1,89, 2,63 und 2,94. Der erste dieser Werte und die Differenzen der benachbarten Werte ergeben die gewünschten gerundeten Werte: 0,97, 0,92 = 1,89 - 0,97, 0,74 = 2,63 - 1,89, und 0,31 = 2,94 - 2,63.

Monte-Carlo-Arithmetik

Die Monte-Carlo-Arithmetik ist eine Technik der Monte-Carlo-Methoden, bei der zufällig auf- oder abgerundet wird. Für die Monte-Carlo-Arithmetik kann stochastisch gerundet werden, aber im Allgemeinen wird häufiger einfach mit gleicher Wahrscheinlichkeit auf- oder abgerundet. Wiederholte Durchläufe ergeben eine Zufallsverteilung der Ergebnisse, die Aufschluss über die Stabilität der Berechnung geben kann.

Exakte Berechnung mit gerundeter Arithmetik

Es ist möglich, die gerundete Arithmetik zu verwenden, um den genauen Wert einer Funktion mit ganzzahligem Bereich zu ermitteln. Wenn zum Beispiel eine ganze Zahl n als perfektes Quadrat bekannt ist, kann ihre Quadratwurzel berechnet werden, indem man n in eine Gleitkommazahl zund die ungefähre Berechnung der Quadratwurzel x von z mit Fließkomma berechnet und dann gerundet wird x auf die nächstgelegene ganze Zahl y. Wenn n nicht zu groß ist, ist der Fließkomma-Rundungsfehler in x weniger als 0,5 betragen, so dass der gerundete Wert y die exakte Quadratwurzel von n. Dies ist im Wesentlichen der Grund, warum Rechenschieber für die exakte Arithmetik verwendet werden können.

Doppelte Rundung

Wenn man eine Zahl zweimal hintereinander auf verschiedene Genauigkeitsstufen rundet, wobei die letztere Genauigkeit gröber ist, ist nicht garantiert, dass man das gleiche Ergebnis erhält wie beim einmaligen Runden auf die endgültige Genauigkeit, es sei denn, es handelt sich um gerichtete Rundungen. So ergibt z. B. die Rundung von 9,46 auf eine Dezimalstelle 9,5 und dann 10, wenn auf eine ganze Zahl gerundet wird, wobei die Hälfte auf eine gerade Zahl gerundet wird, aber 9, wenn direkt auf eine ganze Zahl gerundet wird. Borman und Chatfield erörtern die Auswirkungen der doppelten Rundung beim Vergleich von auf eine Dezimalstelle gerundeten Daten mit Spezifikationsgrenzen, die durch ganze Zahlen ausgedrückt werden.

In den Rechtsstreitigkeiten Martinez gegen Allstate und Sendejo gegen Farmers, die zwischen 1995 und 1997 geführt wurden, argumentierten die Versicherungsgesellschaften, dass eine doppelte Rundung der Prämien zulässig und sogar erforderlich sei. Die US-Gerichte entschieden gegen die Versicherungsgesellschaften und wiesen sie an, Regeln zu erlassen, die eine einfache Rundung gewährleisten.

Einige Computersprachen und die Norm IEEE 754-2008 schreiben vor, dass bei einfachen Berechnungen das Ergebnis nicht zweimal gerundet werden darf. Dies war ein besonderes Problem bei Java, da die Sprache so konzipiert ist, dass sie auf verschiedenen Rechnern identisch ausgeführt werden kann. Um dies mit der x87-Gleitkommazahl zu erreichen, mussten spezielle Programmiertricks angewendet werden. Die Java-Sprache wurde dahingehend geändert, dass unterschiedliche Ergebnisse zulässig sind, wenn der Unterschied keine Rolle spielt, und dass ein strictfp-Qualifizierer verwendet werden muss, wenn die Ergebnisse genau übereinstimmen müssen; strict floating point wurde in Java 17 wieder eingeführt.

In einigen Algorithmen wird ein Zwischenergebnis mit einer höheren Genauigkeit berechnet und muss dann auf die endgültige Genauigkeit gerundet werden. Doppeltes Runden kann vermieden werden, indem eine angemessene Rundung für die Zwischenberechnung gewählt wird. Dies besteht darin, dass bei der endgültigen Rundung nicht auf Mittelwerte gerundet wird (es sei denn, der Mittelwert ist exakt). In der Binärarithmetik besteht die Idee darin, das Ergebnis gegen Null zu runden und das niederwertigste Bit auf 1 zu setzen, wenn das gerundete Ergebnis ungenau ist; diese Rundung wird "sticky rounding" genannt. Diese Rundung wird Sticky-Rundung genannt. Sie besteht darin, das Zwischenergebnis zurückzugeben, wenn es exakt darstellbar ist, und andernfalls die nächstgelegene Fließkommazahl mit ungeradem Signifikanten; daher wird sie auch als Rundung auf ungerade bezeichnet. Eine konkrete Umsetzung dieses Ansatzes für die binäre und dezimale Arithmetik ist als Rundung zur Vorbereitung auf eine kürzere Genauigkeit implementiert.

Das Dilemma des Tabellenmachers

William M. Kahan prägte den Begriff "The Table-Maker's Dilemma" für die unbekannten Kosten der Rundung transzendenter Funktionen:

Niemand weiß, wie viel es kosten würde, zu berechnen yw korrekt gerundet für jede zwei Fließkomma-Argumente zu berechnen, bei denen es nicht zu einem Über- oder Unterlauf kommt. Stattdessen berechnen seriöse mathematische Bibliotheken elementare transzendente Funktionen meist innerhalb von etwas mehr als einem halben ulp und fast immer innerhalb eines ulp. Warum kann nicht yw nicht innerhalb eines halben ulp gerundet werden wie SQRT? Weil niemand weiß, wie viele Berechnungen das kosten würde... Es gibt keine allgemeine Methode, um vorherzusagen, wie viele zusätzliche Ziffern übertragen werden müssen, um einen transzendentalen Ausdruck zu berechnen und ihn zu runden richtig zu runden auf eine vorher festgelegte Anzahl von Stellen zu runden. Sogar die Tatsache (wenn sie wahr ist), dass eine endliche Anzahl zusätzlicher Ziffern letztlich ausreicht, kann ein tiefes Theorem sein.

Der Gleitkomma-Standard IEEE 754 garantiert, dass Addition, Subtraktion, Multiplikation, Division, verschmolzene Multiplikation-Addition, Quadratwurzel und Gleitkomma-Rest das korrekt gerundete Ergebnis der Operation mit unendlicher Genauigkeit ergeben. In der Norm von 1985 gab es keine derartige Garantie für komplexere Funktionen, und sie sind in der Regel bestenfalls bis auf das letzte Bit genau. Die Norm 2008 garantiert jedoch, dass konforme Implementierungen korrekt gerundete Ergebnisse liefern, die den aktiven Rundungsmodus berücksichtigen; die Implementierung der Funktionen ist jedoch optional.

Mit Hilfe des Gelfond-Schneider-Theorems und des Lindemann-Weierstraß-Theorems kann nachgewiesen werden, dass viele der elementaren Standardfunktionen transzendente Ergebnisse liefern, wenn rationale Argumente ungleich Null gegeben sind; daher ist es immer möglich, solche Funktionen korrekt zu runden. Die Bestimmung eines Grenzwerts für eine bestimmte Genauigkeit, der angibt, wie genau die Ergebnisse berechnet werden müssen, bevor ein korrekt gerundetes Ergebnis garantiert werden kann, kann jedoch sehr viel Rechenzeit erfordern oder unerreichbar sein. In der Praxis, wenn diese Grenze nicht bekannt oder zu groß ist, muss eine Entscheidung in der Implementierung getroffen werden (siehe unten), aber nach einem probabilistischen Modell kann die korrekte Rundung mit einer sehr hohen Wahrscheinlichkeit erfüllt werden.

Einige Programmierpakete bieten korrekte Rundung an. Das GNU MPFR-Paket liefert korrekt gerundete Ergebnisse beliebiger Genauigkeit. Einige andere Bibliotheken implementieren elementare Funktionen mit korrekter Rundung in doppelter Genauigkeit:

  • IBMs Accurate portable mathematical library (abgekürzt APMathLib oder einfach MathLib), auch libultim genannt, rundet nur auf den nächsten Wert. Diese Bibliothek verwendet bis zu 768 Bits an Arbeitsgenauigkeit. Sie wurde 2001 in die GNU C Library aufgenommen, aber die "langsamen Pfade" (die eine korrekte Rundung ermöglichen) wurden von 2018 bis 2021 entfernt.
  • Die libmcr von Sun Microsystems, in den 4 Rundungsmodi. Für die schwierigen Fälle verwendet diese Bibliothek auch Mehrfachpräzision, und die Anzahl der Wörter wird jedes Mal um 2 erhöht, wenn das Dilemma des Tabellenmachers auftritt (mit undefiniertem Verhalten für den sehr unwahrscheinlichen Fall, dass eine Grenze der Maschine erreicht wird).
  • CRlibm, geschrieben im alten Arénaire-Team (LIP, ENS Lyon). Es unterstützt die 4 Rundungsmodi und ist bewährt.

Es gibt berechenbare Zahlen, für die niemals ein gerundeter Wert ermittelt werden kann, egal wie viele Stellen berechnet werden. Konkrete Beispiele können nicht angegeben werden, aber dies folgt aus der Unentscheidbarkeit des Halteproblems. Wenn zum Beispiel die Goldbachsche Vermutung wahr, aber unbeweisbar ist, dann kann das Ergebnis der Aufrundung des folgenden Wertes auf die nächste ganze Zahl nicht bestimmt werden: entweder 1+10-n wobei n die erste gerade Zahl größer als 4 ist, die nicht die Summe von zwei Primzahlen ist, oder 1, wenn es keine solche Zahl gibt. Das gerundete Ergebnis ist 2, wenn eine solche Zahl n existiert, andernfalls 1. Der Wert vor der Rundung kann jedoch mit beliebiger Genauigkeit angenähert werden, auch wenn die Vermutung nicht beweisbar ist.

Wechselwirkung mit der Suche nach Zeichenketten

Die Rundung kann sich negativ auf die Suche nach einer Zahl auswirken. Beispielsweise ist π auf vier Stellen gerundet "3,1416", aber eine einfache Suche nach dieser Zeichenkette wird weder "3,14159" noch irgendeinen anderen Wert von π finden, der auf mehr als vier Stellen gerundet ist. Eine einfache Suche nach "3,1415", also π, das auf vier Ziffern abgeschnitten ist, ergibt Werte von π, die auf mehr als vier Ziffern abgeschnitten sind.

Geschichte

Das Konzept der Rundung ist sehr alt, vielleicht älter als das Konzept der Division selbst. Einige alte Tontafeln, die in Mesopotamien gefunden wurden, enthalten Tabellen mit gerundeten Werten von Kehrwerten und Quadratwurzeln zur Basis 60. Gerundete Näherungswerte für π, die Länge des Jahres und die Länge des Monats sind ebenfalls uralt - siehe Beispiele zur Basis 60.

Die Rundungsmethode dient seit 1940 als ASTM-Norm (E-29). Der Ursprung der Begriffe "unbiased rounding" und "statistician's rounding" ist ziemlich selbsterklärend. In der vierten Auflage von "Probability and Theory of Errors" von 1906 nannte Robert Simpson Woodward diese Methode "the computer's rule" und wies damit darauf hin, dass sie damals von menschlichen Computern, die mathematische Tabellen berechneten, häufig verwendet wurde. Churchill Eisenhart wies darauf hin, dass diese Praxis bereits in den 1940er Jahren in der Datenanalyse "gut etabliert" war.

Der Ursprung des Begriffs "Bankers' Rounding" ist nicht ganz klar. Wenn diese Rundungsmethode jemals ein Standard im Bankwesen war, hat es sich als äußerst schwierig erwiesen, Beweise zu finden. Im Gegenteil: Abschnitt 2 des Berichts der Europäischen Kommission über die Einführung des Euro und die Rundung von Währungsbeträgen deutet darauf hin, dass es zuvor keinen Standardansatz für die Rundung im Bankwesen gab; dort heißt es, dass "halbe" Beträge aufgerundet werden sollten.

Bis in die 1980er Jahre war die Rundungsmethode für Fließkommaberechnungen in der Regel durch die Hardware vorgegeben, schlecht dokumentiert, inkonsistent und für jede Computermarke und jedes Computermodell unterschiedlich. Diese Situation änderte sich, nachdem die meisten Computerhersteller den Gleitkommastandard IEEE 754 übernommen hatten. Der Standard ermöglicht es dem Benutzer, zwischen mehreren Rundungsmodi zu wählen, und gibt in jedem Fall genau an, wie die Ergebnisse gerundet werden sollen. Diese Eigenschaften machten numerische Berechnungen vorhersehbarer und maschinenunabhängiger und ermöglichten die effiziente und konsistente Implementierung der Intervallarithmetik.

Derzeit wird in der Forschung häufig auf Vielfache von 5 oder 2 gerundet. Jörg Baten zum Beispiel hat in vielen Studien die Altershäufung verwendet, um die Rechenfertigkeit antiker Bevölkerungen zu bewerten. Er entwickelte den ABCC-Index, der einen Vergleich der Rechenfertigkeiten zwischen Regionen ermöglicht, ohne dass historische Quellen vorliegen, in denen die Rechenfertigkeiten der Bevölkerung gemessen wurden.

Rundungsfunktionen in Programmiersprachen

Die meisten Programmiersprachen bieten Funktionen oder eine spezielle Syntax, um Bruchzahlen auf verschiedene Weise zu runden. Die frühesten numerischen Sprachen wie FORTRAN und C boten nur eine Methode an, in der Regel das Abschneiden (gegen Null). Diese Standardmethode konnte in bestimmten Zusammenhängen impliziert werden, z. B. bei der Zuweisung einer gebrochenen Zahl an eine Ganzzahlvariable oder bei der Verwendung einer gebrochenen Zahl als Index in einem Array. Andere Arten der Rundung mussten explizit programmiert werden; zum Beispiel konnte die Rundung einer positiven Zahl auf die nächste Ganzzahl durch Addition von 0,5 und Abschneiden implementiert werden.

In den letzten Jahrzehnten haben jedoch die Syntax und die Standardbibliotheken der meisten Sprachen zumindest die vier grundlegenden Rundungsfunktionen (aufwärts, abwärts, auf die nächste Zahl und gegen Null) bereitgestellt. Die Methode zum Auflösen von Gleichständen kann je nach Sprache und Version variieren oder vom Programmierer ausgewählt werden. Mehrere Sprachen folgen dem IEEE 754 Fließkomma-Standard und definieren diese Funktionen so, dass sie ein doppelt genaues Float-Argument annehmen und das Ergebnis desselben Typs zurückgeben, das dann bei Bedarf in eine ganze Zahl umgewandelt werden kann. Dieser Ansatz kann ungewollte Überläufe vermeiden, da Fließkommatypen einen größeren Bereich haben als Ganzzahltypen. Einige Sprachen, wie z. B. PHP, bieten Funktionen, die einen Wert auf eine bestimmte Anzahl von Dezimalstellen runden (z. B. von 4321,5678 auf 4321,57 oder 4300). Darüber hinaus bieten viele Sprachen eine printf-Funktion oder eine ähnliche Funktion zur Formatierung von Zeichenketten, mit der eine Bruchzahl in eine Zeichenkette umgewandelt werden kann, die auf eine vom Benutzer angegebene Anzahl von Dezimalstellen (die Genauigkeit) gerundet ist. Andererseits ist das Abschneiden (Runden auf Null) immer noch die Standard-Rundungsmethode, die von vielen Sprachen verwendet wird, insbesondere bei der Division von zwei ganzzahligen Werten.

Im Gegensatz dazu definieren CSS und SVG keine spezifische maximale Genauigkeit für Zahlen und Messwerte, die in ihrem DOM und in ihrer IDL-Schnittstelle als Strings behandelt und dargestellt werden, als ob sie eine unendliche Genauigkeit hätten, und unterscheiden nicht zwischen Ganzzahlen und Fließkommazahlen; die Implementierungen dieser Sprachen konvertieren diese Zahlen jedoch in der Regel in IEEE-754-Gleitkommazahlen mit doppelter Genauigkeit, bevor sie die berechneten Ziffern mit einer begrenzten Genauigkeit darstellen (insbesondere in Standard-JavaScript- oder ECMAScript-Schnittstellenbindungen).

Andere Rundungsstandards

Einige Disziplinen oder Institutionen haben Standards oder Richtlinien für die Rundung erlassen.

US-Wetterbeobachtungen

In einer Mitte 1966 herausgegebenen Richtlinie legte das U.S. Office of the Federal Coordinator for Meteorology fest, dass Wetterdaten auf die nächste runde Zahl gerundet werden sollten, wobei die Gleichheitsregel "round half up" gilt. So sollte z. B. 1,5, aufgerundet auf eine ganze Zahl, zu 2 werden, und -1,5 sollte zu -1 werden. Vor diesem Datum galt die Regel, dass bei Unentschieden die Hälfte von Null abgerundet wird.

Negative Null in der Meteorologie

Manche Meteorologen schreiben "-0", um eine Temperatur zwischen 0,0 und -0,5 Grad (ausschließlich) anzugeben, die auf eine ganze Zahl gerundet wurde. Diese Schreibweise wird verwendet, wenn das negative Vorzeichen als wichtig erachtet wird, unabhängig davon, wie klein der Betrag ist; zum Beispiel beim Runden von Temperaturen auf der Celsius-Skala, wo ein Wert unter Null den Gefrierpunkt anzeigt.

Rundungsregeln

Kaufmännisches Runden

Das Kaufmännische Runden (nicht negativer Zahlen) geschieht wie folgt:

  • Ist die Ziffer an der ersten wegfallenden Dezimalstelle eine 0, 1, 2, 3 oder 4, dann wird abgerundet.
  • Ist die Ziffer an der ersten wegfallenden Dezimalstelle eine 5, 6, 7, 8 oder 9, dann wird aufgerundet.

Diese Rundungsregel wird durch die Norm DIN 1333 beschrieben. Das Runden wird so auch häufig bereits in der Grundschule gelehrt.

Beispiele (jeweils Rundung auf zwei Nachkommastellen):

  • 13,3749… € ≈ 13,37 €
  • 13,3750… € ≈ 13,38 €

Negative Zahlen werden nach ihrem Betrag gerundet, bei einer 5 also weg von null (engl: Away from Zero):

  • −13,3749… € ≈ −13,37 €
  • −13,3750… € ≈ −13,38 €

Das Kaufmännische Runden wird im juristischen Umfeld teilweise auch als Bürgerliches Runden bezeichnet und z. B. in § 14 des Beamtenversorgungsgesetzes so erklärt:

„Der Ruhegehaltssatz ist auf zwei Dezimalstellen auszurechnen. Dabei ist die zweite Dezimalstelle um eins zu erhöhen, wenn in der dritten Stelle eine der Ziffern fünf bis neun verbleiben würde.“

Umgang mit gerundeten Zahlen

Runden bereits gerundeter Zahlen

Ist die Ausgangszahl bereits das Ergebnis einer Rundung, so muss für den Grenzfall, dass die neue Rundungsstelle 5 ist (und alle Stellen danach Nullen), wenn möglich auf die ungerundete Zahl zurückgegriffen werden (etwa bei mathematischen Konstanten):

  • ungerundete Zahl bekannt: 13,374999747, gerundete Ausgangszahl: 13,3750
→ Rundung der ungerundeten Zahl auf zwei Nachkommastellen ergibt: 13,37
  • ungerundete Zahl unbekannt, gerundete Ausgangszahl: 13,3750
→ Rundung der zuvor bereits gerundeten Zahl auf zwei Nachkommastellen ergibt: 13,38.

Kennzeichnung von Rundungsergebnissen

In wissenschaftlichen Arbeiten und Logarithmentafeln wird manchmal kenntlich gemacht, ob die letzte Ziffer durch Auf- oder Abrunden erhalten wurde. Eine Ziffer, die durch Aufrunden erhalten wurde, wird mit einem Strich unter (oder auch oberhalb) der Ziffer kenntlich gemacht, eine Ziffer, die durch das Runden nicht verändert wurde (die Zahl wurde also abgerundet), wird mit einem Punkt über der Ziffer gekennzeichnet.

Beispiele:

  • wird zu ; diese Zahl wird beim erneuten Runden zu . Beim erneuten Runden (im Beispiel auf drei Stellen nach dem Komma) ist also abzurunden.
  • wird zu ; diese Zahl wird beim erneuten Runden zu , deutlicher . Beim erneuten Runden (im Beispiel auf drei Stellen nach dem Komma) ist also aufzurunden. Für weiteres Runden (hier auf zwei Stellen) wäre abzurunden, angedeutet durch 5.

Sind keine weiteren Stellen bekannt, so wird die Ausgangszahl als exakt angenommen.

Rundungsregeln formal

Gerade das kaufmännische Runden wird so erklärt, dass auch Kinder es verstehen. Dafür muss man nur Preise von Waren und Gehältern in der Kommaschreibweise kennen. Selbst im Kapitel „Elementarmathematik“ des Taschenbuchs der Mathematik von Bronstein/Semendjajew werden etwas kompliziertere Rundungsregeln ohne Zuhilfenahme tieferer mathematischer Ausdrucksweisen formuliert, allerdings von mathematischen Erläuterungen begleitet. Im vorliegenden Abschnitt kommen einige dieser und einige andere mathematische Gesichtspunkte zur Sprache.

Endliche und unendliche Ziffernfolgen

Bronstein/Semendjajew erörtern das Ab- oder Aufrunden anhand formaler Zahlwörter – Zeichenketten in einem (dezimalen) Stellenwertsystem, nicht zu verwechseln mit der Wortart. Positive Dezimalbrüche (im engeren Sinne, ) können als

geschrieben werden (oder umgekehrt). Hierbei gibt es Stellen vor dem Komma (allgemeiner Trennzeichen) und Stellen danach. sind aus dem Ziffernvorrat {0,1,2,3,4,5,6,7,8,9}.

Andere positive reelle Zahlen können durch Dezimalbrüche (als Näherungswerte) beliebig genau angenähert werden, vgl. Darstellungen verschiedener Zahlenarten und Dezimalbruchentwicklung. Die Koeffizienten der Dezimalbruchentwicklung

einer solchen Zahl ergeben dann eine unendlich lange (durch ein Komma bzw. Trennzeichen unterbrochene) Folge von Ziffern . Hierbei ist jeweils die Zahl der Ziffernwert von 0 hat den Ziffernwert , 1 hat den Ziffernwert usw. Mit

ist die Folge der Näherungswerte monoton steigend und durch nach oben beschränkt. Mehr noch: der Abbruchfehler geht gegen 0, somit konvergiert gegen . Ist

jeweils die darstellende Zeichenkette, so ist für die Zeichenkette ein Präfix der Zeichenkette , von der unendlich langen, darstellenden Zeichenkette – salopp  – ist es etwas Ähnliches, Bronstein/Semendjajew nennen es informell ein „Anfangsstück“ von letzterer. Dasselbe wie für lässt sich von sagen (Komma und Nachkommastellen fehlen).

Die Aussagen über und treffen aber auch zu, wenn durch eine endliche Zeichenkette mit Nachkommastellen darstellbar ist. In diesem Fall sind für die Koeffizienten und die Ziffern 0. Diese Betrachtungsweise ist auch für die Formulierung von Rundungsregeln hilfreich.

Für negative Zahlen gilt das Entsprechende mit vorangestelltem Minuszeichen usw. (die Folge der Näherungswerte fällt…).

Mit anderen Ziffernvorräten und anderen Kriterien für die Darstellbarkeit durch endliche Zeichenketten gilt das Vorige auch für Stellenwertsysteme zu anderen Basen statt 10. Die Basis 10 ist alltäglich, wenn man sich nicht (beruflich) mit der Implementierung von Rundung im Computer befasst, wo Potenzen von 2 als Basen dienen.

Die allseits beliebte Pünktchenschreibweise ist formal als folgendermaßen rekursiv definiert zu verstehen ( steht für die Konkatenation von Zeichenketten, für die leere Zeichenkette):

„Abschneiden“/„Abbrechen“

Abschneiden oder Abbrechen/Abbruch nach der -ten Nachkommastelle einer Zahl, von der Nachkommastellen bekannt sind, bedeutet, dass man das „Zahlwort“ durch als „Näherung“ ersetzt, in der dazu oben verwendeten Notation durch . Man verwendet also ein Präfix oder ein „Anfangsstück“ einer genaueren Zeichenkette. Der Fall liegt praktisch etwa vor, wenn man bei einer nicht mit endlich vielen Ziffern darstellbaren Zahl, nacheinander die ersten Nachkommastellen bestimmt und keine weiteren – in diesem Fall ist allerdings die durch dargestellte Zahl Näherungswert eher für . Für die mathematische Rundung auf die -te Nachkommastelle ist jedoch die Kenntnis von (mindestens) erforderlich.

Das Abbrechen einer mit Nachkommastellen vorliegenden Zahl – z. B. so aus Messwerten errechnet oder vom Messgerät abgelesen – Nachkommastellen kann beim Rechnen mit gerundeten Zahlen sinnvoll sein, oder wenn man weiß, dass das Gerät zwar Nachkommastellen anzeigt, aber nur davon zuverlässig messen kann.

Abrunden

Die Gaußklammer :, auch Gauß-, Ganzzahl- oder Abrundungs-Funktion genannt, bildet jede reelle Zahl auf die größte ganze Zahl ab, die nicht größer ist als die reelle Zahl.

Folgerungen:

  • Die Gaußfunktion ändert nicht das Vorzeichen, kann aber eine positive Zahl auf null abbilden.
  • Für positive Zahlen in Stellenschreibweise ist die Anwendung der Gaußfunktion identisch mit dem Abschneiden der Nachkommastellen (einschließlich des Kommas).
  • Für jede negative nicht-ganze Zahl ist der Betrag des Funktionswerts größer als der Betrag der Eingangszahl.

Um eine positive nicht-ganze Zahl in Stellenschreibweise so abzurunden, dass nur noch die -te Nachkommastelle beibehalten wird (sie auf die -te Stelle nach dem Komma abzurunden), schneidet man einfach die weiteren Nachkommastellen ab. Im Dezimalsystem ist unter Verwendung der Gaußklammer der aus auf die -te Nachkommastelle abgerundete Wert

.

Aufrunden

Das Gegenstück zur Gaußklammerfunktion ist die Aufrundungsfunktion (auch obere Gaußklammer), die einer reellen Zahl die ganze Zahl

zuordnet. Der auf die -te Nachkommastelle aufgerundete Wert einer positiven reellen Zahl ist .

Rundung im Computer

Da Gleitkommazahlen im Computer nur einen bestimmten, endlichen Speicherbereich belegen, ist die Genauigkeit systembedingt eingeschränkt. Nach mathematischen Operationen (wie der Multiplikation) entstehen zudem in der Regel Zahlen, die eine höhere Genauigkeit benötigen würden. Um das Ergebnis dennoch darstellen zu können, muss in irgendeiner Weise so gerundet werden, dass die Zahl in das vorgesehene Zahlenformat (z. B. IEEE 754) passt.

Das einfachste Rundungsschema ist das Abschneiden (engl. truncation oder chopping): Eine Zahl wird links eines bestimmten Punktes stehen gelassen, der Rest fallen gelassen. Dadurch wird sie auf die nächstmögliche Zahl abgerundet. Zum Beispiel wird, wenn man auf null Nachkommastellen rundet, aus eine . Diese Methode ist sehr schnell, sie leidet aber unter einem verhältnismäßig großen Rundungsfehler (im Beispiel beträgt er ). Das Abschneiden ist jedoch eine unverzichtbare Methode in der digitalen Signalverarbeitung. Als einzige Methode kann mit ihr sicher ein instabiler Grenzzyklus durch Rundungsfehler in digitalen Filtern verhindert werden.

Als weiteres Rundungsschema wird ebenfalls das kaufmännische Runden verwendet (engl. round-to-nearest). Man addiert dabei vor dem Runden auf die zu rundende Zahl und schneidet danach ab. Im Beispiel hieße das, dass abgeschnitten wird zu . Der Fehler beträgt hierbei nur . Allerdings ist dieses Runden positiv verzerrt.

Daher zieht man das mathematische Runden in Betracht (englisch round-to-nearest-even), das bei Zahlen, die auf enden, jeweils zur nächsten geraden Zahl rundet. Dieses Rundungsverfahren ist im IEEE-754-Standard vorgesehen. Alternativ kann auch auf die nächste ungerade Zahl gerundet werden (englisch round-to-nearest-odd).

Wenngleich das mathematische Runden eine gute numerische Leistung zeigt, benötigt es doch eine vollständige Addition, da das Übertragsbit im schlimmsten Fall durch alle Stellen der Zahl wandert. Damit besitzt es eine verhältnismäßig schlechte Laufzeitleistung. Als mögliche Umgehung dieser Problematik bietet sich eine vorgefertigte Tabelle an, die die gerundeten Ergebnisse enthält, welche nur noch abgerufen werden müssen.