Rundung

Das Wort "Rundung" für einen numerischen Wert bedeutet, dass dieser durch einen anderen Wert ersetzt wird, der ungefähr gleich ist, aber eine kürzere, einfachere oder explizitere Form hat. Beispielsweise könnten 23,74 US-Dollar auf 24 US-Dollar gerundet werden, oder der Bruchteil 312/937 könnte auf 1/3 gerundet werden, oder der Ausdruck 2 {\displaystyle {\sqrt {2}}}{\displaystyle {\sqrt {2}}} als 1,41.

Rundungen werden oft absichtlich vorgenommen, um einen Wert zu erhalten, der einfacher zu schreiben und zu handhaben ist als das Original. Es kann auch getan werden, um die Genauigkeit einer berechneten Zahl anzugeben; zum Beispiel wird eine Menge, die als 123.456 berechnet wurde, aber bekanntermaßen nur bis auf wenige hundert Einheiten genau ist, besser als "etwa 123.500" angegeben.

Andererseits kann die Rundung einen Rundungsfehler im Ergebnis verursachen. Das Runden ist bei vielen Berechnungen fast unvermeidlich, insbesondere bei der Division zweier Zahlen in Ganzzahl- oder Festkommaarithmetik, bei der Berechnung mathematischer Funktionen wie Quadratwurzeln, Logarithmen und Sinus oder bei der Verwendung einer Gleitkommadarstellung mit einer festen Anzahl signifikanter Ziffern. In einer Folge von Berechnungen häufen sich diese Rundungsfehler im Allgemeinen an, und in bestimmten "schlecht konditionierten" Fällen können sie das Ergebnis dann bedeutungslos machen.

Die genaue Rundung transzendenter mathematischer Funktionen ist schwierig, da die Anzahl der zusätzlichen Ziffern, die berechnet werden müssen, um zu entscheiden, ob auf- oder abgerundet werden soll, nicht im Voraus bekannt ist. Dieses Problem wird als "das Dilemma des Tischlers" (unten) bezeichnet.

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

Arten der Rundung

Typische Rundungsprobleme sind:

  • Annäherung einer irrationalen Zahl durch einen Bruchteil, z.B. π durch 22/7;
  • Annäherung eines Bruchteils mit periodischer Dezimalentwicklung durch einen endlichen Dezimalbruch, z.B. 5/3 durch 1,6667;
  • Ersetzen einer rationalen Zahl durch einen Bruch mit kleinerem Zähler und Nenner, z.B. 3122/9417 durch 1/3;
  • Ersetzen einer gebrochenen Dezimalzahl durch eine mit weniger Ziffern, z.B. 2,1784 Dollar durch 2,18 Dollar;
  • Ersetzen einer dezimalen Ganzzahl durch eine Ganzzahl mit mehr nachgestellten Nullen, z. B. 23.217 Personen durch 23.200 Personen; oder, im Allgemeinen,
  • Ersetzen eines Wertes durch ein Vielfaches eines bestimmten Betrages, z.B. 27,2 Sekunden durch 30 Sekunden (ein Vielfaches von 15).

Runden auf ein bestimmtes Inkrement

Die gebräuchlichste Art der Rundung ist die Rundung auf eine ganze Zahl oder, allgemeiner, auf ein ganzzahliges Vielfaches irgendeiner Schrittweite - wie z.B. die Rundung auf ganze Zehntelsekunden, Hundertstel eines Dollars, auf ganze Vielfache von 1/2 oder 1/8 Zoll, auf ganze Dutzende oder Tausende usw.

Im Allgemeinen umfasst das Runden einer Zahl x auf ein Vielfaches eines bestimmten Inkrements m die folgenden Schritte:

  1. Dividieren Sie x durch m, das Ergebnis sei y;
  2. Runden Sie y auf einen ganzzahligen Wert, nennen Sie ihn q;
  3. Multiplizieren Sie q mit m, um den gerundeten Wert z zu erhalten.

z = r o u u n d ( x , m ) = r o u n d ( x / m ) m {\displaystyle z=\mathrm {rund} (x,m)=\mathrm {rund} (x/m)\cdot m\,} {\displaystyle z=\mathrm {round} (x,m)=\mathrm {round} (x/m)\cdot m\,}

Beispielsweise führt die Rundung von x = 2,1784 Dollar auf ganze Cents (d.h. auf ein Vielfaches von 0,01) zur Berechnung von y = x/m = 2,1784/0,01 = 217,84, dann zur Rundung von y auf die ganze Zahl q = 218 und schließlich zur Berechnung von z = q×m = 218×0,01 = 2,18.

Bei der Rundung auf eine vorgegebene Anzahl signifikanter Stellen 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 welchem Zahlensystem auch immer, das zur Darstellung der Zahlen verwendet wird. Für die Darstellung für Menschen bedeutet das normalerweise das dezimale Zahlensystem (d.h. m ist eine ganze Zahl mal eine Potenz von 10, wie 1/1000 oder 25/100). Für Zwischenwerte, die in Digitalcomputern gespeichert sind, bedeutet es oft das binäre Zahlensystem (m ist eine ganze Zahl mal eine Potenz von 2).

Die abstrakte Einzelargument "round()"-Funktion, die eine ganze Zahl aus einem beliebigen realen Wert zurückgibt, hat mindestens ein Dutzend verschiedene konkrete Definitionen, die im Abschnitt Rundung auf ganze Zahlen vorgestellt werden. Die abstrakte "round()"-Funktion mit zwei Argumenten ist hier formal definiert, aber in vielen Fällen wird sie mit dem impliziten Wert m = 1 für das Inkrement verwendet und dann auf die äquivalente abstrakte Funktion mit einem Argument reduziert, mit ebenfalls demselben Dutzend verschiedener konkreter Definitionen.

Rundung auf ganze Zahlen

Die grundlegendste Form der Rundung besteht darin, eine beliebige Zahl durch eine ganze Zahl zu ersetzen. Alle folgenden Rundungsmodi sind konkrete Implementierungen der abstrakten Einzelargument "round()"-Funktion, die in den vorangegangenen Abschnitten vorgestellt und verwendet wurde.

Es gibt viele Möglichkeiten, eine Zahl y auf eine ganze Zahl q zu runden. Die gebräuchlichsten sind

  • nach unten abrunden (oder den Boden nehmen, oder in Richtung minus unendlich abrunden): q ist die größte ganze Zahl, die y nicht überschreitet.

q = f l o o r ( y ) = y = - - y {\displaystyle q=\mathrm {floor} (y)=\linker\floor y\rechter\floor =-\linke\Decke -y\rechte\rceil \,} {\displaystyle q=\mathrm {floor} (y)=\left\lfloor y\right\rfloor =-\left\lceil -y\right\rceil \,}

  • aufrunden (oder die Decke nehmen, oder auf plus unendlich runden): q ist die kleinste ganze Zahl, die nicht kleiner als y ist.

q = c e i l ( y ) = y = - - y {\displaystyle q=\mathrm {ceil} (y)=\linke\Decke y\rechte\decke =-\linker\floor -y\rechter\floor \,} {\displaystyle q=\mathrm {ceil} (y)=\left\lceil y\right\rceil =-\left\lfloor -y\right\rfloor \,}

  • gegen Null runden (oder abschneiden, oder von unendlich weg runden): q ist der ganzzahlige Teil von y, ohne seine Nachkommastellen.

q = t r u n c a t e ( y ) = sgn ( y ) | y | = - sgn ( y ) - | y | {\displaystyle q=\mathrm {truncate} (y)=\operatorname {sgn}(y)\links\floor \links|y\rechts|\rechts\floor =-\operatorname {sgn}(y)\links\decke -\links|y\rechts\rechts\rceil \,} {\displaystyle q=\mathrm {truncate} (y)=\operatorname {sgn}(y)\left\lfloor \left|y\right|\right\rfloor =-\operatorname {sgn}(y)\left\lceil -\left|y\right|\right\rceil \,}

  • von Null weg (oder in Richtung Unendlichkeit) runden: wenn y eine ganze Zahl ist, ist q y; andernfalls ist q die ganze Zahl, die am nächsten bei 0 liegt und so gewählt ist, dass y zwischen 0 und q liegt.

q = sgn ( y ) | y | = - sgn ( y ) - | y | {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|\right\rfloor \,} {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|\right\rfloor \,}

  • round to nearest: q ist die Ganzzahl, die y am nächsten kommt (siehe unten für die Regeln zur Aufhebung von Gleichstand).

Die ersten vier Methoden werden als gerichtete Rundung bezeichnet, da die Verschiebungen von der ursprünglichen Zahl y zum gerundeten Wert q alle auf den gleichen Grenzwert (0, +∞ oder -∞) zu oder von diesem weg gerichtet sind.

Wenn y positiv ist, ist Abrunden gleichbedeutend mit Abrunden gegen Null und Aufrunden gleichbedeutend mit Abrunden von Null weg. Wenn y negativ ist, entspricht das Abrunden dem Abrunden von Null und das Aufrunden dem Aufrunden von Null. Wenn y eine ganze Zahl ist, ist q in jedem Fall nur y. Die folgende Tabelle veranschaulicht diese Rundungsmethoden:

y

Abrundung
(in Richtung -∞)

Zusammenfassung
(in Richtung +∞)

rundweg null

Runde weg
von Null

Rundtischgespräch

+23.67

+23

+24

+23

+24

+24

+23.50

+23

+24

+23

+24

+23 oder +24

+23.35

+23

+24

+23

+24

+23

+23.00

+23

+23

+23

+23

+23

0

0

0

0

0

0

−23.00

−23

−23

−23

−23

−23

−23.35

−24

−23

−23

−24

−23

−23.50

−24

−23

−23

−24

-23 oder -24

−23.67

−24

−23

−23

−24

−24

Wenn viele Berechnungen nacheinander durchgeführt werden, kann die Wahl der Rundungsmethode einen sehr großen Einfluss auf das Ergebnis haben. Ein berühmter Fall betraf einen neuen Index, der 1982 von der Vancouver Stock Exchange eingerichtet wurde. Er wurde zunächst auf 1000.000 festgelegt, und nach 22 Monaten war er auf etwa 520 gefallen - während die Aktienkurse in diesem Zeitraum im Allgemeinen gestiegen waren. Das Problem wurde dadurch verursacht, dass der Index täglich tausende Male neu berechnet und immer auf 3 Dezimalstellen abgerundet wurde, so dass sich die Rundungsfehler häuften. Die Neuberechnung mit besserer Rundung ergab am Ende desselben Zeitraums einen Indexwert von 1098.892.

Tie-Breaking

Das Runden einer Zahl y auf die nächstliegende ganze Zahl erfordert eine Regel zur Aufhebung der Gleichheit für die Fälle, in denen y genau in der Mitte zwischen zwei ganzen Zahlen liegt, d.h. wenn der Bruchteil von y genau 0,5 beträgt.

Die Hälfte aufrunden

Die folgende Tie-Breaking-Regel, die als "Round half up" (oder "Round half towards plus infinity") bezeichnet wird, ist in vielen Disziplinen weit verbreitet. Das heißt, Halbwerte y werden immer aufgerundet.

  • Wenn der Bruchteil von y genau 0,5 ist, dann ist q = y + 0,5.

q = y + 0,5 = - - y - 0,5 {\Anzeigestil q=\linker\floor y+0,5\rechter\floor =-\linke\Decke -y-0,5\rechte\rceil \,} {\displaystyle q=\left\lfloor y+0.5\right\rfloor =-\left\lceil -y-0.5\right\rceil \,}

Beispielsweise wird durch diese Regel der Wert 23,5 auf 24 gerundet, aber -23,5 wird auf -23 gerundet.

Dies ist eine von zwei Regeln, die im Allgemeinen im US-Mathematik-Grundlagenunterricht gelehrt werden. []

Ohne die 0,5 Brüche wären die Rundungsfehler, die durch die Methode "round to nearest" eingeführt werden, ziemlich symmetrisch: Für jeden Bruchteil, der aufgerundet wird (z.B. 0,268), gibt es einen Komplementärbruch (nämlich 0,732), der um den gleichen Betrag abgerundet wird. Wenn eine große Menge von Zahlen mit zufälligen Bruchteilen gerundet wird, würden sich diese Rundungsfehler statistisch kompensieren, und der erwartete (durchschnittliche) Wert der gerundeten Zahlen wäre gleich dem erwarteten Wert der ursprünglichen Zahlen.

Die Regel der Aufrundung ist jedoch nicht symmetrisch, da die Bruchteile, die genau 0,5 betragen, immer aufgerundet werden. Diese Asymmetrie führt zu einer positiven Verzerrung der Rundungsfehler. Wenn beispielsweise der Bruch von y aus drei zufälligen Dezimalstellen besteht, dann ist der erwartete Wert von q um 0,0005 höher als der erwartete Wert von y. Aus diesem Grund wird die Aufrundung mit der Aufrundungsregel auch (mehrdeutig) als asymmetrische Rundung bezeichnet.

Ein Grund für die Aufrundung auf 0,5 ist, dass nur eine Stelle untersucht werden muss. Wenn man z.B. 17.50000... sieht, bestimmen die ersten drei Ziffern, 17,5, dass die Zahl auf 18 aufgerundet werden würde. Würde die umgekehrte Regel verwendet (halbe Abrundung), dann müssten alle null Dezimalstellen untersucht werden, um festzustellen, ob der Wert genau 17,5 beträgt.

Halb abgerundet

Man kann auch die runde Hälfte nach unten (oder die runde Hälfte in Richtung minus unendlich) im Gegensatz zur gebräuchlicheren Methode des Aufrundens nach oben verwenden (die Methode des Aufrundens nach oben ist eine gebräuchliche Konvention, aber nichts weiter als eine Konvention).

  • Wenn der Bruchteil von y genau 0,5 ist, dann ist q = y - 0,5.

q = y - 0.5 = - - y + 0.5 {\Anzeigestil q=\linke\Decke y-0.5\rechte\Decke =-\linker\Boden -y+0.5\rechter\Boden \,} {\displaystyle q=\left\lceil y-0.5\right\rceil =-\left\lfloor -y+0.5\right\rfloor \,}

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

Die runde Half-Down-Tie-Breaking-Regel ist nicht symmetrisch, da die Bruchteile, die genau 0,5 sind, immer abgerundet werden. Diese Asymmetrie führt zu einer negativen Verzerrung der Rundungsfehler. Wenn beispielsweise der Bruch von y aus drei zufälligen Dezimalstellen besteht, dann ist der erwartete Wert von q um 0,0005 niedriger als der erwartete Wert von y. Aus diesem Grund wird die Rundung mit der Rounding-Half-Down-Regel auch (mehrdeutig) als asymmetrische Rundung bezeichnet.

Runde halb weg von Null

Die andere häufig gelehrte und angewandte Methode zur Lösung von Konflikten ist die runde Hälfte von Null weg (oder die runde Hälfte in Richtung Unendlichkeit), nämlich

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

q = sgn ( y ) | y | + 0.5 = - sgn ( y ) - | y | - 0.5 {\displaystyle q=\operatorname {sgn}(y)\links\floor \links|y\rechts|+0.5\rechts\floor =-\operatorname {sgn}(y)\links\decke -\links|y\rechts|-0.5\rechts\rceil \,} {\displaystyle q=\operatorname {sgn}(y)\left\lfloor \left|y\right|+0.5\right\rfloor =-\operatorname {sgn}(y)\left\lceil -\left|y\right|-0.5\right\rceil \,}

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

Diese Methode behandelt positive und negative Werte symmetrisch und ist daher frei von einer Gesamtverzerrung, wenn die ursprünglichen Zahlen mit gleicher Wahrscheinlichkeit positiv oder negativ sind. Diese Regel führt jedoch weiterhin eine positive Verzerrung für positive Zahlen und eine negative Verzerrung für die negativen Zahlen ein.

Sie wird häufig für Währungsumrechnungen und Preisrundungen (bei der ersten Umrechnung des Betrags in die kleinste signifikante Unterteilung der Währung, wie z.B. Cents eines Euro) verwendet, da sie leicht zu erklären ist, indem man nur die erste Nachkommastelle berücksichtigt, unabhängig von zusätzlichen Präzisionsziffern oder Vorzeichen des Betrags (bei strikter Äquivalenz zwischen zahlendem und Empfänger des Betrags).

Die Hälfte gegen Null runden

Man kann auch die Hälfte gegen Null runden (oder die Hälfte von der Unendlichkeit wegrunden), im Gegensatz zur gebräuchlicheren Methode der runden Hälfte von Null weg (die Methode der runden Hälfte von Null weg ist eine gebräuchliche Konvention, aber nichts weiter als eine Konvention).

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

q = sgn ( y ) | y | - 0.5 = - sgn ( y ) - | y | + 0.5 {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|-0.5\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|+0.5\right\rfloor \,} {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|-0.5\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|+0.5\right\rfloor \,}

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

Diese Methode behandelt auch positive und negative Werte symmetrisch und ist daher frei von einer Gesamtverzerrung, wenn die ursprünglichen Zahlen mit gleicher Wahrscheinlichkeit positiv oder negativ sind. Diese Regel führt jedoch weiterhin eine negative Verzerrung für positive Zahlen und eine positive Verzerrung für die negativen Zahlen ein.

Runde halb bis gerade

Eine noch weniger voreingenommene Tie-Breaking-Regel ist rund halb bis ausgeglichen, nämlich

  • Wenn der Bruch von y 0,5 ist, dann ist q die gerade ganze Zahl, die y am nächsten liegt.

So wird z.B. aus +23,5 wird +24, aus +22,5 wird +22, aus -22,5 wird -22 und aus -23,5 wird -24.

Diese Methode behandelt auch positive und negative Werte symmetrisch und ist daher frei von einer Gesamtverzerrung, wenn die ursprünglichen Zahlen mit gleicher Wahrscheinlichkeit positiv oder negativ sind. Darüber hinaus ist bei den meisten vernünftigen Verteilungen von y-Werten der erwartete (durchschnittliche) Wert der gerundeten Zahlen im Wesentlichen derselbe wie der der ursprünglichen Zahlen, auch wenn letztere alle positiv (oder alle negativ) sind. Diese Regel führt jedoch nach wie vor eine positive Verzerrung für gerade Zahlen (einschließlich Null) und eine negative Verzerrung für die ungeraden Zahlen ein.

Diese Variante der Rundum-zu-nächster-Methode wird auch als unvoreingenommenes Runden (zweideutig und etwas missbräuchlich), konvergentes Runden, statistisches Runden, niederländisches Runden, Gauß-Runden oder Banker-Runden bezeichnet. Dies ist in der Buchhaltung weit verbreitet.

Dies ist der Standard-Rundungsmodus, der in IEEE 754 Rechenfunktionen und Operatoren verwendet wird.

Runde halb bis ungerade

Eine weitere unentschiedene Regel, die der Regel "runde halbe bis gerade Runde" sehr ähnlich ist, nämlich

  • Wenn der Bruch von y 0,5 ist, dann ist q die ungerade ganze Zahl, die y am nächsten liegt.

So wird zum Beispiel aus +22,5 wird +23, aus +21,5 wird +21, aus -21,5 wird -21 und aus -22,5 wird -23.

Diese Methode behandelt auch positive und negative Werte symmetrisch und ist daher frei von einer Gesamtverzerrung, wenn die ursprünglichen Zahlen mit gleicher Wahrscheinlichkeit positiv oder negativ sind. Darüber hinaus ist bei den meisten vernünftigen Verteilungen von y-Werten der erwartete (durchschnittliche) Wert der gerundeten Zahlen im Wesentlichen derselbe wie der der ursprünglichen Zahlen, auch wenn letztere alle positiv (oder alle negativ) sind. Diese Regel führt jedoch immer noch eine negative Verzerrung für gerade Zahlen (einschließlich Null) und eine positive Verzerrung für die ungeraden Zahlen ein.

Diese Variante wird in den meisten Berechnungen fast nie verwendet, außer in Situationen, in denen man vermeiden möchte, 0,5 oder -0,5 auf Null zu runden oder die Skalierung von Zahlen, die als Fließkommazahlen dargestellt werden (mit begrenzten Bereichen für den Skalierungsexponenten), zu erhöhen, so dass eine nicht unendliche Zahl auf unendlich gerundet wird oder dass ein kleiner denormaler Wert auf einen normalen, von Null verschiedenen Wert gerundet wird (dies könnte bei der Rundung im Modus "halbe bis gerade Zahl" auftreten). Effektiv bevorzugt dieser Modus die Beibehaltung der bestehenden Skala der Gleichheitszahlen und vermeidet, wenn möglich, Ergebnisse außerhalb des Bereichs.

Stochastische Rundung

Eine weitere unvoreingenommene Methode zur Lösung von Konflikten ist die stochastische Rundung:

  • Wenn der Bruchteil von y 0,5 ist, wählen Sie q mit gleicher Wahrscheinlichkeit zufällig zwischen y + 0,5 und y - 0,5.

Wie die runde halbe bis gerade Zahl ist auch diese Regel im Wesentlichen frei von allgemeinen Verzerrungen; sie ist aber auch fair bei geraden und ungeraden q-Werten. Auf der anderen Seite führt sie eine Zufallskomponente in das Ergebnis ein; wenn dieselbe Berechnung zweimal mit denselben Daten durchgeführt wird, kann dies zu zwei unterschiedlichen Ergebnissen führen. Außerdem ist sie offen für unbewusste Verzerrungen, wenn Menschen (und nicht Computer oder Zufallsgeräte) "zufällig" entscheiden, in welche Richtung gerundet werden soll.

Abwechselndes Tie-Breaking

Eine Methode, undurchsichtiger als die meisten, ist die abwechselnd runde Hälfte.

  • Wenn der Bruchteil 0,5 beträgt, wird abwechselnd auf- und abgerundet: beim ersten Auftreten eines Bruchteils von 0,5 wird aufgerundet; beim zweiten Auftreten wird abgerundet; usw. usw.

Dadurch wird die Zufallskomponente des Ergebnisses unterdrückt, wenn Vorkommen von 0,5 Bruchteilen effektiv gezählt werden können. Es kann aber dennoch eine positive oder negative Verzerrung entsprechend der Rundungsrichtung des ersten Auftretens einführen, wenn die Gesamtzahl der Vorkommen ungerade ist.

Einfaches Dithering

In manchen Kontexten können alle oben genannten Rundungsmethoden unbefriedigend sein. Nehmen wir zum Beispiel an, dass y eine genaue Messung eines Audiosignals ist, das auf eine ganze Zahl q gerundet wird, um die Speicher- oder Übertragungskosten zu reduzieren. Wenn sich y langsam mit der Zeit ändert, führt jedes der oben genannten Rundungsverfahren dazu, dass q über lange Intervalle hinweg völlig konstant ist, getrennt durch plötzliche Sprünge von ±1. Bei der Wiedergabe des q-Signals werden diese Schritte als ein sehr unangenehmes Rauschen wahrgenommen, und alle Abweichungen des ursprünglichen Signals zwischen zwei ganzzahligen Werten gehen vollständig verloren.

Eine Möglichkeit, dieses Problem zu vermeiden, besteht darin, jeden Wert y mit einer Wahrscheinlichkeit, die seinem Bruchteil entspricht, nach oben zu runden und ihn mit dem Komplement dieser Wahrscheinlichkeit nach unten zu runden. Zum Beispiel würde die Zahl 23,17 mit einer Wahrscheinlichkeit von 0,17 auf 24 auf- und mit einer Wahrscheinlichkeit von 1 - 0,17 = 0,83 auf 23 abgerundet. (Dies entspricht einer Abrundung von y + s, wobei s eine Zufallszahl ist, die gleichmäßig zwischen 0 und 1 verteilt ist). Bei dieser speziellen Rundung, die als Dithering bekannt ist, werden die plötzlichen Schritte durch ein weniger störendes Rauschen ersetzt, und selbst kleine Abweichungen im ursprünglichen Signal bleiben bis zu einem gewissen Grad erhalten. Wie der stochastische Ansatz beim Tie-Breaking hat auch das Dithering keine Verzerrung: Wenn alle Bruchwerte gleich wahrscheinlich sind, ist eine Aufrundung um einen bestimmten Betrag genauso wahrscheinlich wie eine Abrundung um denselben Betrag; dasselbe gilt für die Summe mehrerer gerundeter Zahlen. Auf der anderen Seite führt das Dithering eine Zufallskomponente in das Ergebnis ein, die viel größer ist als die des stochastischen Tie-Breaking.

Genauer gesagt wird der Rundungsfehler für jede geditherte Zahl eine gleichmäßig verteilte Zufallsvariable mit einem Mittelwert von Null sein, aber mit einer Standardabweichung 1 / 12 ≈ 0.2886 {\displaystyle 1/{\sqrt {12}}\approx 0.2886} {\displaystyle 1/{\sqrt {12}}\approx 0.2886}die besser ist als die 1/2 Standardabweichung bei den einfachen prädiktiven Methoden, aber etwas höher als bei der einfacheren stochastischen Methode. Die Summe von n gerundeten Zahlen wird jedoch eine Zufallsvariable mit erwartetem Fehler Null sein, jedoch mit der Standardabweichung n / 12 {\darstellungsstil {\sqrt {n}}/{\sqrt {12}}} {\displaystyle {\sqrt {n}}/{\sqrt {12}}}(das gesamte verbleibende Rauschen), das semi-quadratisch divergiert und leicht wahrnehmbar werden kann, selbst wenn die Standardabweichung des Rundungsfehlers pro Abtastung 1 / 12 n {\darstellungsstil 1/{\sqrt {12n}}}{\displaystyle 1/{\sqrt {12n}}} beträgt, die langsam semi-quadratisch zu Null konvergiert. Diese Zufallsverteilung kann also für einige Anwendungen, die viele Daten runden, immer noch zu hoch sein.

Mehrdimensionales Dithering

Diese Variante der einfachen Dithering-Methode rundet Werte immer noch mit einer Wahrscheinlichkeit, die ihrem Bruchteil entspricht. Anstatt jedoch eine Zufallsverteilung für die Rundung isolierter Stichproben zu verwenden, wird der Rundungsfehler, der bei jeder gerundeten Stichprobe auftritt, für die als nächstes abzutastenden oder zu berechnenden umgebenden Elemente summiert; dieser kumulierte Wert wird dann zum Wert dieser als nächstes abzutastenden oder zu rundenden berechneten Werte addiert, so dass die modifizierten Werte diese Differenz unter Verwendung eines Vorhersagemodells (wie z.B. Floyd-Steinberg-Dithering) berücksichtigen.

Die modifizierten Werte werden dann mit einer der obigen Rundungsmethoden gerundet, am besten mit stochastischen oder Dithering-Methoden: In diesem letzten Fall ist die Summe von n gerundeten Zahlen immer noch eine Zufallsvariable mit erwartetem Fehler Null, aber mit einer ausgezeichneten konstanten Standardabweichung von 1 / 12 {\darstellungsstil 1/{\sqrt {12}}} {\displaystyle 1/{\sqrt {12}}}statt semi-quadratisch zu divergieren, wenn isolierte Stichproben dithern; und die durchschnittliche Rundungsfehlerabweichung pro gerundeter Stichprobe beträgt insgesamt 1 / ( n 12 ) {\darstellungsstil 1/(n{\sqrt {12}}})}{\displaystyle 1/(n{\sqrt {12}})}, die beim Dithern isolierter Stichproben schneller hyperbolisch zu Null konvergiert als bei der semihyperbolischen Konvergenz.

In der Praxis wird bei der Rundung großer Mengen abgetasteter Daten (z. B. bei der Wiedergabe von Audio-, Bild- und Videodaten) die Akkumulation von Rundungsfehlern am häufigsten mit einer einfachen prädiktiven Rundung der modifizierten Werte (z. B. Rundung gegen Null) verwendet, weil dadurch die hyperbolische Konvergenz des gesamten mittleren Rundungsfehler-Bias und seiner Standardabweichung gegen Null erhalten bleibt. Diese Verbesserung wird häufig in der Bild- und Audioverarbeitung verwendet (insbesondere für genaue Skalierungs- und Antialiasing-Operationen, bei denen das einfache probabilistische Dithering isolierter Werte immer noch wahrnehmbares Rauschen erzeugen kann, das manchmal sogar schlimmer ist als die Moiré-Effekte, die bei einfachen nicht-probabilistischen Rundungsmethoden auftreten, die auf isolierte Proben angewendet werden).

Die effektive Ausbreitung akkumulierter Rundungsfehler kann von der diskreten Dimension der abzurundenden Daten abhängen: Bei der Abtastung zweidimensionaler Bilder, einschließlich farbiger Bilder (die die diskrete Dimension von Farbebenen hinzufügen), oder dreidimensionaler Videos (die eine diskrete Zeitdimension hinzufügen), oder bei mehrstimmigen Audiodaten (unter Verwendung zeit- und kanaldiskreter Dimensionen) kann es immer noch vorzuziehen sein, diesen Fehler in eine bevorzugte Richtung oder gleichermaßen in mehrere orthogonale Dimensionen auszubreiten, wie z.B. vertikal vs. vertikal. horizontal für zweidimensionale Bilder, oder in parallele Farbkanäle an derselben Position und/oder mit demselben Zeitstempel und in Abhängigkeit von anderen Eigenschaften dieser orthogonalen diskreten Dimensionen (gemäß einem Wahrnehmungsmodell). In diesen Fällen können mehrere Rundungsfehler-Akkumulatoren (mindestens einer für jede diskrete Dimension) oder ein (n-1)-Dimensionsvektor (oder eine Matrix) von Akkumulatoren verwendet werden.

In einigen dieser Fälle können die diskreten Dimensionen der zu beprobenden und zu rundenden Daten nicht orthogonal behandelt werden: Wenn beispielsweise mit Farbbildern gearbeitet wird, könnten die Daten der trichromatischen Farbebenen in jeder physikalischen Dimension (Höhe, Breite und optional Zeit) unter Verwendung eines perzeptiven Farbmodells neu abgebildet werden, so dass die Rundungsfehlerakkumulatoren so ausgelegt sind, dass die Helligkeit mit einer höheren Wahrscheinlichkeit als der Farbton oder die Sättigung erhalten bleibt, anstatt die Fehler in jeder orthogonalen Farbebene unabhängig voneinander zu propagieren; und in stereophonen Audiodaten können die beiden gerundeten Datenkanäle (links und rechts) zusammen gerundet werden, um ihren Mittelwert vorrangig vor ihrer effektiven Differenz zu erhalten, die die meisten der verbleibenden Rundungsfehler absorbiert, und zwar auf ausgewogene Weise um Null herum.

Runden auf einfache Brüche

In manchen Kontexten ist es wünschenswert, eine gegebene Zahl x auf einen "sauberen" Bruch zu runden - d.h. den nächsten Bruch z = m/n, dessen Zähler m und Nenner n ein gegebenes Maximum nicht überschreiten. Dieses Problem unterscheidet sich ziemlich stark von dem der Rundung eines Wertes auf eine feste Anzahl von Dezimal- oder Binärziffern oder auf ein Vielfaches einer gegebenen Einheit m. Dieses Problem hängt mit Farey-Sequenzen, dem Stern-Brocot-Baum und Kettenbrüchen zusammen.

Skalierte Rundung

Diese Art der Rundung, die auch als Runden auf logarithmische Skala bezeichnet wird, ist eine Variante der Rundung auf eine bestimmte Schrittweite, jedoch mit einer Schrittweite, die je nach Skala und Größe des Ergebnisses modifiziert wird. Konkret geht es darum, die Anzahl der signifikanten Stellen zu begrenzen, indem der Wert so gerundet wird, dass nicht signifikante Stellen wegfallen. Diese Art der Rundung erfolgt implizit bei Zahlen, die mit Fließkommawerten mit begrenzter Genauigkeit berechnet werden (wie z.B. IEEE-754-Fließkomma- und Doppeltypen), aber sie kann allgemeiner verwendet werden, um beliebige reelle Werte mit einer beliebigen positiven Anzahl signifikanter Stellen und einer beliebigen streng positiven reellen Basis zu runden.

Beispielsweise kann es in technischen Grafiken zur Darstellung von Daten mit einer logarithmischen Skala mit variablen Schritten (z.B. Wellenlängen, deren Basis nicht unbedingt ein ganzzahliges Maß ist) oder in statistischen Daten zur Definition von Klassen reeller Werte innerhalb von Intervallen exponentiell wachsender Breite verwendet werden (die häufigste Verwendung erfolgt jedoch mit ganzzahligen Basen wie 10 oder 2). [Quelle? ]

Diese Art der Rundung basiert auf einer logarithmischen Skala, die durch einen festen reellen Skalierungsfaktor s ungleich Null (in den meisten Fällen ist dieser Faktor s=1) und eine feste positive Basis b>1 (nicht notwendigerweise eine ganze Zahl und meistens vom Skalierungsfaktor verschieden) und eine feste ganzzahlige Anzahl n>0 signifikanter Stellen in dieser Basis definiert ist (die den Wert des für die Rundung zu verwendenden Inkrements bestimmt, zusammen mit der berechneten effektiven Skala der gerundeten Zahl).

Die primäre Argumentzahl (wie auch die resultierende gerundete Zahl) wird zunächst in Exponentialnotation x = s-a-m-bc dargestellt, so dass das Vorzeichen s entweder +1 oder -1 ist, die absolute Mantisse a auf das halboffene positive Intervall [1/b,1] beschränkt ist und der Exponent c eine beliebige (positive oder negative) ganze Zahl ist. In dieser Darstellung liegen alle signifikanten Ziffern im Bruchteil der absoluten Mantisse, deren ganzzahliger Teil immer Null ist.

Wenn die Quellzahl (oder gerundete Zahl) 0 ist, wird die absolute Mantisse a als 0 definiert, der Exponent c wird auf einen willkürlichen Wert festgelegt (0 in den meisten Konventionen, aber einige Gleitkommadarstellungen können keine absolute Nullmantisse verwenden, sondern reservieren einen bestimmten maximalen negativen Wert für den Exponenten c, um die Zahl 0 selbst darzustellen), und das Vorzeichen s kann willkürlich zwischen -1 oder +1 gewählt werden (es wird im Allgemeinen für eine einfache Null auf +1 gesetzt, oder es wird auf das gleiche Vorzeichen wie das Argument im gerundeten Wert gesetzt, wenn die Zahlendarstellung es erlaubt, positive und negative Nullen zu unterscheiden, auch wenn sie schließlich den gleichen Zahlenwert 0 darstellen).

Eine skalierte Exponentialdarstellung als x = a-s-bc kann ebenfalls äquivalent verwendet werden, mit einer vorzeichenbehafteten Mantisse a entweder gleich Null oder innerhalb eines der beiden halboffenen Intervalle (-1,-1/b] und [+1/b,+1), und dies wird im folgenden Algorithmus der Fall sein.

Die Schritte zur Berechnung dieser skalierten Rundung sind im Allgemeinen ähnlich wie die folgenden:

  1. wenn x gleich Null ist, einfach x zurückgeben; andernfalls:
  2. x in die skalierte exponentielle Darstellung mit einer vorzeichenbehafteten Mantisse umwandeln:
    x = a
    s b c {\Darstellungsstil x=a\cdot s\cdot b^{c}\,} {\displaystyle x=a\cdot s\cdot b^{c}\,}
    1. sei x' der unskalierte Wert von x, indem man ihn durch den Skalierungsfaktor s teilt:
      x ′ = x / s {\darstellungsstil x'=x/s\,}
      {\displaystyle x'=x/s\,} ;
    2. sei der Skalierungsexponent c eins plus dem Logarithmus zur Basis b des Absolutwerts von x', abgerundet auf eine ganze Zahl (gegen minus unendlich):
      c = 1 +
      log b | x ′ | = 1 + log b | x / s | {\darstellungsstil c=1+\links\floor \log _{b}\links|x'\rechts|\rechts\floor =1+\links\floor \log _{b}\links|x/s\rechts|\rechts\floor \,} {\displaystyle c=1+\left\lfloor \log _{b}\left|x'\right|\right\rfloor =1+\left\lfloor \log _{b}\left|x/s\right|\right\rfloor \,};
    3. Die unterzeichnete Mantisse a sei das Produkt aus x' geteilt durch b hoch c:
      a = x ′
      b - c = x / s b - c {\darstellungsstil a=x'\cPunkt b^{-c}=x/s\cPunkt b^{-c}\,} {\displaystyle a=x'\cdot b^{-c}=x/s\cdot b^{-c}\,}
  3. Berechnen Sie den gerundeten Wert in dieser Darstellung:
    1. sei c' der anfängliche Skalierungsexponent c von x':
      c ′ = c {\darstellungsstil c'=c\,}
      {\displaystyle c'=c\,}
    2. sei m das Inkrement für die Rundung der Mantisse a entsprechend der Anzahl der signifikanten Ziffern, die beibehalten werden müssen:
      m = b - n {\Anzeigeart m=b^{-n}\,}
      {\displaystyle m=b^{-n}\,}
    3. sei a' die vorzeichenbehaftete Mantisse a, die entsprechend diesem Inkrement m und dem gewählten Rundungsmodus gerundet wird:
      a ′ = r o u n d ( a , m ) = r o u n d ( x / s
      b n - c ′ ) b - n {\darstellungsstil a'=\mathrm {rund} (a,m)=\mathrm {rund} (x/s\cdot b^{n-c'})\cdot b^{-n}\,} {\displaystyle a'=\mathrm {round} (a,m)=\mathrm {round} (x/s\cdot b^{n-c'})\cdot b^{-n}\,}
    4. wenn der Absolutwert von a' nicht kleiner als b ist, dann dekrementieren Sie n (multiplizieren Sie das Inkrement m mit b), erhöhen Sie den Skalierungsexponenten c', dividieren Sie die vorzeichenbehaftete Mantisse a durch b und beginnen Sie die Rundung der neuen vorzeichenbehafteten Mantisse a in a' mit der gleichen Formel neu; dieser Schritt kann nur vermieden werden, wenn die abtrakte "round()"-Funktion a immer gegen 0 (i) rundet.Dieser Schritt kann nur vermieden werden, wenn die Funktion abtract "round()" immer a gegen 0 rundet (d. h. wenn es sich um eine einfache Trunkierung handelt), ist aber notwendig, wenn a gegen unendlich gerundet werden kann, weil die gerundete Mantisse in diesem Fall einen höheren Skalierungsexponenten haben kann, wodurch eine zusätzliche Genauigkeitsstelle übrigbleibt.
  4. gibt den gerundeten Wert zurück:
    y = s c a l e d r o u n d ( x , s , b , n ) = a ′
    s b c ′ = r o u n d ( x / s b n - c ′ ) s b c ′ - n {\darstellungsstil y=\mathrm {skaliert} (x,s,b,n)=a'\cdot s\cdot b^{c'}=\mathrm {runde} (x/s\cdot b^{n-c'})\cdot s\cdot b^{c'-n}\,} {\displaystyle y=\mathrm {scaledround} (x,s,b,n)=a'\cdot s\cdot b^{c'}=\mathrm {round} (x/s\cdot b^{n-c'})\cdot s\cdot b^{c'-n}\,}.

Für die abstrakte "round()"-Funktion kann diese Art der Rundung jeden der im nächsten Abschnitt näher beschriebenen Modi für die Rundung auf Ganzzahlen verwenden, am häufigsten ist es jedoch der Modus "round to nearest" (mit den Regeln für das Tie-Breaking, die ebenfalls weiter unten ausführlicher beschrieben werden).

Zum Beispiel:

  • die skalierte Rundung von 1,234 mit Skalierungsfaktor 1 zur Basis 10 und 3 signifikanten Stellen (maximale relative Genauigkeit = 1/1000) ergibt bei Verwendung einer beliebigen Rundung auf den nächstliegenden Modus 1,23;
  • Eine ähnlich skalierte Rundung von 1,236 ergibt 1,24;
  • Eine ähnlich skalierte Rundung von 21,236 wird 21,2 ergeben;
  • Eine ähnlich skalierte Rundung von 321.236 ergibt 321;
  • die skalierte Rundung von 1,234 Skalierungsfaktor 1 zur Basis 10 und 3 signifikanten Stellen (maximale relative Genauigkeit=1/1000) ergibt bei Verwendung des Abrundungsmodus 1,23;
  • Eine ähnlich skalierte Rundung von 1,236 wird ebenfalls 1,23 ergeben;
  • die skalierte Rundung von 3 π / 7 ≈ 6.8571 π 2 - 4 {\displaystyle \scriptstyle 3\pi /7\;\approx \;6.8571\cdot \pi \cdot 2^{-4}}{\displaystyle \scriptstyle 3\pi /7\;\approx \;6.8571\cdot \pi \cdot 2^{-4}} mit Skalierungsfaktor π {\displaystyle \scriptstyle \pi }{\displaystyle \scriptstyle \pi } zur Basis 2 und 3 signifikanten Stellen (maximale relative Genauigkeit=1/8), bei Verwendung des Abrundungsmodus, ergibt 6 π 2 - 4 = 3 π / 8 {\displaystyle \scriptstyle 6\cdot \pi \cdot 2^{-4}\;=\;3\pi /8} {\displaystyle \scriptstyle 6\cdot \pi \cdot 2^{-4}\;=\;3\pi /8};
  • ähnlich skalierte Rundung von 5 π / 7 ≈ 5.7143 π 2 - 3 {\displaystyle \scriptstyle 5\pi /7\;\approx \;5.7143\cdot \pi \cdot 2^{-3}}{\displaystyle \scriptstyle 5\pi /7\;\approx \;5.7143\cdot \pi \cdot 2^{-3}} ergibt 5 π 2 - 3 = 5 π / 8 {\displaystyle \scriptstyle 5\cdot \pi \cdot 2^{-3}\;=\;5\pi /8} {\displaystyle \scriptstyle 5\cdot \pi \cdot 2^{-3}\;=\;5\pi /8};
  • ähnlich skalierte Rundung von π / 7 ≈ 4.5714 π 2 - 5 {\displaystyle \scriptstyle \pi /7\;\approx \;4.5714\cdot \pi \cdot 2^{-5}}{\displaystyle \scriptstyle \pi /7\;\approx \;4.5714\cdot \pi \cdot 2^{-5}} ergibt 4 π 2 - 5 = π / 8 {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8} {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8}.
  • ähnlich skalierte Rundung von π / 8 = 4 π 2 - 5 {\displaystyle \scriptstyle \pi /8\;=\;4\cdot \pi \cdot 2^{-5}}{\displaystyle \scriptstyle \pi /8\;=\;4\cdot \pi \cdot 2^{-5}} wird auch 4 zurückgeben π 2 - 5 = π / 8 {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8}{\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8} .
  • ähnlich skalierte Rundung von π / 15 ≈ 4.2667 π 2 - 6 {\displaystyle \scriptstyle \pi /15\;\approx \;4.2667\cdot \pi \cdot 2^{-6}}{\displaystyle \scriptstyle \pi /15\;\approx \;4.2667\cdot \pi \cdot 2^{-6}} ergibt 4 π 2 - 6 = π / 16 {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-6}\;=\;\pi /16} {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-6}\;=\;\pi /16}.

Runden auf verfügbaren Wert

Fertiges Schnittholz, Schreibpapier, Kondensatoren und viele andere Produkte werden gewöhnlich nur in einigen wenigen Standardgrößen verkauft.

Viele Entwurfsverfahren beschreiben, wie ein Näherungswert berechnet und dann mit Ausdrücken wie "Abrunden auf nächsten Standardwert", "Aufrunden auf nächsten Standardwert" oder "Runden auf nächsten Standardwert" auf eine bestimmte Standardgröße "gerundet" wird.

Wenn ein Satz von bevorzugten Werten auf einer logarithmischen Skala in gleichen Abständen angeordnet ist, kann die Wahl des bevorzugten Wertes, der einem gegebenen Wert am nächsten liegt, als eine Art skalierte Rundung angesehen werden. Solche "gerundeten" Werte können direkt berechnet werden.

Gleitkomma-Rundung

In der Gleitkommaarithmetik zielt die Rundung darauf ab, einen gegebenen Wert x in einen Wert z mit einer bestimmten Anzahl signifikanter Ziffern zu verwandeln. Mit anderen Worten, z sollte ein Vielfaches einer Zahl m sein, die von der Größe von z abhängt. Die Zahl m ist eine Potenz der Basis (normalerweise 2 oder 10) der Gleitkommaform.

Abgesehen von diesem Detail gelten alle oben diskutierten Varianten der Rundung auch für die Rundung von Gleitkommazahlen. Der Algorithmus für eine solche Rundung wird im Abschnitt Skalierte Rundung oben vorgestellt, jedoch mit einem konstanten Skalierungsfaktor s=1 und einer ganzzahligen Basis b>1.

Bei Ergebnissen, bei denen das gerundete Ergebnis überlaufen würde, ist das Ergebnis für eine gerichtete Rundung entweder die entsprechende vorzeichenbehaftete Unendlichkeit oder die höchste darstellbare positive endliche Zahl (oder die niedrigste darstellbare negative endliche Zahl, wenn x negativ ist), je nach der Richtung der Rundung. Das Ergebnis eines Überlaufs für den üblichen Fall der Rundung auf gerade ist immer die entsprechende Unendlichkeit.

Darüber hinaus, wenn das gerundete Ergebnis unterlaufen würde, d.h. wenn der Exponent den niedrigsten darstellbaren ganzzahligen Wert übersteigen würde, kann das effektive Ergebnis entweder Null sein (möglicherweise mit Vorzeichen, wenn die Darstellung eine Unterscheidung der Vorzeichen für Nullen beibehalten kann), oder die kleinste darstellbare positive endliche Zahl (oder die höchste darstellbare negative endliche Zahl, wenn x negativ ist), möglicherweise eine denormale positive oder negative Zahl (wenn die Mantisse alle ihre signifikanten Ziffern speichert, In diesem Fall kann die höchstwertige Stelle immer noch in einer niedrigeren Position gespeichert werden, indem die höchsten gespeicherten Stellen auf Null gesetzt werden, und diese gespeicherte Mantisse lässt die höchstwertige Stelle nicht fallen, was möglich ist, wenn die Basis b=2 ist, weil die höchstwertige Stelle immer 1 in dieser Basis ist), je nach Rundungsrichtung. Das Ergebnis eines Unterlaufs für den üblichen Fall der Rundung auf gerade ist immer die entsprechende Null.

Doppelte Rundung

Wenn eine Zahl zweimal hintereinander mit unterschiedlicher Genauigkeit gerundet wird, wobei die letztere Genauigkeit gröber ist, ist nicht garantiert, dass das gleiche Ergebnis wie bei einer einmaligen Rundung auf die endgültige Genauigkeit erzielt wird, außer im Falle einer gerichteten Rundung. So ergibt z.B. die Rundung 9,46 auf eine Dezimalstelle 9,5, und dann 10, wenn auf ganze Zahlen gerundet wird, wobei die halbe auf gerade gerundet wird, würde aber 9 ergeben, wenn direkt auf ganze Zahlen gerundet wird.

Einige Computersprachen und der Standard IEEE 754-2008 schreiben vor, dass bei einfachen Berechnungen das Ergebnis nicht zweimal gerundet werden sollte. Dies war ein besonderes Problem bei Java, da es so konzipiert ist, dass es auf verschiedenen Rechnern identisch ausgeführt werden kann. Es mussten spezielle Programmiertricks angewandt werden, um dies mit x87-Fließkommazahlen zu erreichen. Die Java-Sprache wurde geändert, um unterschiedliche Ergebnisse zu ermöglichen, bei denen der Unterschied keine Rolle spielt, und um einen "strictfp"-Qualifier zu verwenden, wenn die Ergebnisse genau übereinstimmen müssen.

Exaktes Rechnen mit gerundeter Arithmetik

Es ist möglich, gerundete Arithmetik zu verwenden, um den genauen Wert einer Funktion mit einem diskreten Bereich und Bereich zu bewerten. Wenn wir beispielsweise wissen, dass eine ganze Zahl n ein perfektes Quadrat ist, können wir ihre Quadratwurzel berechnen, indem wir n in einen Fließkommawert x umwandeln, die ungefähre Quadratwurzel y von x mit Fließkomma berechnen und dann y auf die nächste ganze Zahl q runden. Wenn n nicht zu groß ist, beträgt der Fließkomma-Rundungsfehler in y weniger als 0,5, so dass der gerundete Wert q die exakte Quadratwurzel von n ist.

Das Dilemma des Tischmachers

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

"Niemand weiß, wie viel es kosten würde, y^w korrekt gerundet für je zwei Fließkomma-Argumente zu berechnen, bei denen es nicht über-/unterläuft. Stattdessen berechnen seriöse Mathematikbibliotheken elementare transzendente Funktionen meist innerhalb von etwas mehr als einer halben Ulp und fast immer innerhalb einer Ulp. Warum kann Y^W nicht wie SQRT innerhalb einer halben Elle gerundet werden? Weil niemand weiß, wieviel die Berechnung kosten würde... Es gibt keine generelle Möglichkeit, vorherzusagen, wie viele zusätzliche Stellen zur Berechnung eines transzendentalen Ausdrucks getragen werden müssen, und diesen korrekt auf eine vorher festgelegte Anzahl von Stellen zu runden. Sogar die Tatsache (wenn sie zutrifft), dass eine endliche Anzahl von zusätzlichen Ziffern letztendlich ausreichen wird, kann ein tiefer Satz sein".

Der IEEE-Gleitkommastandard garantiert, dass Addieren, Subtrahieren, Multiplizieren, Dividieren, Quadratwurzel und Gleitkommarest das korrekt gerundete Ergebnis der Operation mit unendlicher Genauigkeit ergeben. Für komplexere Funktionen wird jedoch keine solche Garantie gegeben, und sie sind in der Regel bestenfalls bis auf das letzte Bit genau.

Mit Hilfe des Gelfond-Schneider-Theorems und des Lindemann-Weierstraß-Theorems kann bewiesen werden, dass viele der elementaren Standardfunktionen transzendente Ergebnisse liefern, wenn rationale Nicht-Null-Argumente gegeben werden; daher ist es immer möglich, solche Funktionen korrekt zu runden. Die Bestimmung einer Grenze für eine gegebene Präzision, wie genaue Ergebnisse berechnet werden müssen, bevor ein korrekt gerundetes Ergebnis garantiert werden kann, kann jedoch viel Rechenzeit erfordern.

Inzwischen gibt es einige Pakete, die volle Genauigkeit bieten. Das MPFR-Paket liefert korrekt gerundete willkürliche Präzisionsergebnisse. IBM hat ein Paket für schnelle und genaue IEEE-Elementfunktionen geschrieben, und in Zukunft könnten die Standardbibliotheken eine solche Präzision bieten.

Es ist möglich, wohldefinierte berechenbare Zahlen zu entwickeln, die möglicherweise niemals korrekt gerundet werden können, egal wie viele Stellen berechnet werden. Wenn zum Beispiel Goldbachs Vermutung wahr, aber nicht beweisbar ist, dann ist es unmöglich, 0,5 + 10-n korrekt abzurunden, wobei n die erste gerade Zahl größer als 4 ist, die nicht die Summe zweier Primzahlen ist, oder 0,5, wenn es keine solche Zahl gibt. Dies kann jedoch an jede beliebige Genauigkeit angenähert werden, auch wenn die Vermutung nicht beweisbar ist.

Geschichte

Das Konzept der Rundung ist sehr alt, vielleicht sogar älter als das Konzept der Teilung. Einige alte Tontafeln, die in Mesopotamien gefunden wurden, enthalten Tabellen mit gerundeten Werten von Reziprokwerten und Quadratwurzeln in Basis 60. Gerundete Annäherungen an π, die Länge des Jahres und die Länge des Monats sind ebenfalls alt.

Die Round-to-even-Methode dient seit 1940 als ASTM (E-29)-Norm. Der Ursprung der Begriffe unvoreingenommene Rundung und Rundung des Statistikers sind ziemlich selbsterklärend. In der 4. Ausgabe von Probability and Theory of Errors aus dem Jahr 1906 nannte Robert Simpson Woodward dies "die Regel des Computers" und wies darauf hin, dass sie damals von menschlichen Computern zur Berechnung mathematischer Tabellen allgemein verwendet wurde. Churchill Eisenharts Beitrag von 1947 "Effects of Rounding or Grouping Data" (in Selected Techniques of Statistical Analysis, McGrawHill, 1947, Eisenhart, Hastay, and Wallis, Herausgeber) wies darauf hin, dass diese Praxis in der Datenanalyse bereits "gut etabliert" war.

Die Herkunft des Begriffs "Bankrunden" bleibt unklarer. Sollte diese Rundungsmethode jemals ein Standard im Bankwesen gewesen sein, so hat es sich als äußerst schwierig erwiesen, Beweise dafür zu finden. Im Gegenteil, Abschnitt 2 des Berichts der Europäischen Kommission 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 gegeben hat; und es heißt dort, dass "halbe" Beträge aufgerundet werden sollten.

Bis in die 1980er Jahre war die in der Fließkomma-Computerarithmetik verwendete Rundungsmethode in der Regel durch die Hardware festgelegt, schlecht dokumentiert, inkonsistent und für jede Computermarke und jedes Computermodell unterschiedlich. Diese Situation änderte sich, nachdem der Gleitkommastandard IEEE 754 von den meisten Computerherstellern übernommen wurde. Der Standard erlaubt es dem Benutzer, zwischen mehreren Rundungsmodi zu wählen, und legt in jedem Fall genau fest, wie die Ergebnisse gerundet werden sollen. Diese Eigenschaften machten numerische Berechnungen vorhersehbarer und maschinenunabhängiger und ermöglichten eine effiziente und konsistente Implementierung der Intervallarithmetik.

Rundungsfunktionen in Programmiersprachen

Die meisten Programmiersprachen stellen Funktionen oder eine spezielle Syntax zur Verfügung, um gebrochene Zahlen auf verschiedene Arten zu runden. Die frühesten numerischen Sprachen, wie FORTRAN und C, boten nur eine Methode an, in der Regel die Trunkierung (gegen Null). Diese Standardmethode könnte in bestimmten Zusammenhängen impliziert sein, z.B. bei der Zuweisung einer gebrochenen Zahl an eine Ganzzahlvariable oder bei der Verwendung einer gebrochenen Zahl als Index eines Arrays. Andere Arten der Rundung mussten explizit programmiert werden; zum Beispiel konnte die Rundung einer positiven Zahl auf die nächste ganze Zahl durch Addition von 0,5 und Abschneiden implementiert werden.

In den letzten Jahrzehnten haben jedoch die Syntax und/oder die Standardbibliotheken der meisten Sprachen im Allgemeinen mindestens die vier grundlegenden Rundungsfunktionen (Aufwärts/Decken, Abwärts/Boden, zum nächsten und gegen Null) bereitgestellt. Die Methode des Tie-Breaking kann je nach Sprache und Version variieren und/oder vom Programmierer ausgewählt werden. Mehrere Sprachen orientieren sich an der IEEE-754-Fließkomma-Norm und definieren diese Funktionen so, dass sie ein Gleitkomma-Argument mit doppelter Genauigkeit nehmen und das Ergebnis desselben Typs zurückgeben, das dann bei Bedarf in eine ganze Zahl umgewandelt werden kann. Da das IEEE-Format mit doppelter Genauigkeit 52 Bruchbits hat, kann dieser Ansatz in Sprachen mit 32-Bit-Ganzzahlen unerwünschte Überläufe vermeiden. 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"- oder ähnliche Stringformatierungsfunktion, mit der man eine gebrochene Zahl in einen String umwandeln kann, der auf eine vom Benutzer festgelegte Anzahl von Dezimalstellen (die Genauigkeit) gerundet wird. Andererseits ist die Trunkierung (Runden auf Null) immer noch die von vielen Sprachen verwendete Standard-Rundungsmethode, insbesondere für die Division von zwei ganzzahligen Werten.

Im Gegensatz dazu definieren CSS und SVG keine spezifische maximale Präzision für Zahlen und Maße, die in ihrem Document Object Model und in ihrer Schnittstelle zur Beschreibungssprache als Zeichenketten behandelt und offengelegt werden, als ob sie unendliche Präzision hätten, und sie unterscheiden nicht zwischen ganzen Zahlen und Fließkommazahlen; die Implementierungen dieser Sprachen wandeln diese Zahlen jedoch in der Regel in doppelte IEEE-754-Fließkommazahlen um, bevor die berechneten Ziffern mit einer begrenzten Präzision offengelegt werden (insbesondere innerhalb von Standard-Javascript- oder ECMAScript-Schnittstellenbindungen).

Andere Rundungsstandards

Einige Disziplinen oder Institutionen haben Normen oder Richtlinien für die Rundung herausgegeben.

U.S.-Wetterbeobachtungen

In einer Mitte 1966 herausgegebenen Richtlinie legte das US-Büro des Bundeskoordinators für Meteorologie fest, dass Wetterdaten auf die nächste runde Zahl gerundet werden sollten, wobei die Regel "Aufrunden auf halber Höhe" gilt. Beispielsweise sollte 1,5, gerundet auf ganze Zahlen, zu 2 werden, und -1,5 sollte zu -1 werden. Vor diesem Datum lautete die Tie-Breaking-Regel "von Null auf die Hälfte aufrunden".

Negativer Nullpunkt in der Meteorologie

Einige Meteorologen schreiben vielleicht "-0", um eine Temperatur zwischen 0,0 und -0,5 Grad (ausschließlich) anzugeben, die auf ganze Zahlen gerundet wurde. Diese Schreibweise wird verwendet, wenn das negative Vorzeichen als wichtig erachtet wird, unabhängig davon, wie klein die Größe ist; z.B. beim Runden von Temperaturen in der Celsius-Skala, wo unter Null Gefrieren angezeigt wird. []

Verwandte Seiten

Fragen und Antworten

F: Was bedeutet das Wort "Rundung"?


A: Runden ist das Ersetzen eines numerischen Wertes durch einen anderen Wert, der ungefähr gleich ist, aber eine kürzere, einfachere oder eindeutigere Form hat.

F: Was ist ein Beispiel für eine Rundung?


A: Ein Beispiel für eine Rundung wäre, dass US$23,74 auf US$24 gerundet wird, der Bruch 312/937 auf 1/3 gerundet wird und der Ausdruck 2 {\displaystyle {\sqrt {2}} auf 1,41 gerundet wird.

F: Warum runden wir Zahlen?


A: Wir runden Zahlen, um einen Wert zu erhalten, der einfacher zu schreiben und zu handhaben ist als das Original. Dies kann auch geschehen, um die Genauigkeit einer berechneten Zahl anzugeben.

F: Welche Probleme können beim Runden auftreten?


A: Das Runden kann zu Rundungsfehlern führen und in bestimmten Fällen kann das Ergebnis aufgrund von Fehlern, die sich im Laufe der Zeit bei Berechnungen ansammeln, bedeutungslos werden. Außerdem kann das genaue Runden von transzendentalen mathematischen Funktionen schwierig sein, da man nicht weiß, wie viele zusätzliche Stellen berechnet werden müssen, um zu entscheiden, ob auf- oder abgerundet werden soll.

F: Wie hängt das Runden mit der Quantisierung zusammen?


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

AlegsaOnline.com - 2020 / 2023 - License CC3