Titelgrafik
Zahlen runden

Um eine Zahl n auf irgend ein Raster r zu runden (z.B. 3. Kommastelle, ganze oder gerade Zahlen, 0.5-Schritte usw.), kann folgende Formel verwendet werden:

ngerundet= r * floor[(n + r/2) / r]

floor rundet eine Kommazahl auf die nächst kleinere Ganzzahl ab (auch neg. Zahlen). 3.3 -> 3, -5.2 -> -6 usw.

Beispiele:

4.7 soll auf ganze Zahlen gerundet werden (r = 1):
ngerundet = 1 * floor[(4.7 + 0.5) / 1] = 5

4.739999 soll auf 3 Kommastellen gerundet werden (r = 0.001):
ngerundet = 0.001 * floor[(4.739999 + 0.0005) / 0.001] = 4.74

-2.5 soll auf ganze Zahlen gerundet werden (r = 1):
ngerundet = 1 * floor[(-2.5 + 0.5) / 1] = -2

-3.7 soll auf gerade Zahlen gerundet werden (r = 2):
ngerundet = 2 * floor[(-3.7 + 1) / 2] = -4

Wenn die Floor-Funktion nicht zur Verfügung steht

Wenn keine Abrunde-Funktion zur Verfügung steht, kann die Int-Funktion verwendet werden. Jedoch muss dann für neg. Zahlen eine Spezialbehandlung gemacht werden.

r * int[(n + r/2) / r] (n >= 0)
ngerundet=
r * int[(n + D + r/2) / r] - D (n < 0)

wobei D = int(|n|/r + 1) * r

int bedeutet, dass nur der Ganzzahlanteil interessiert, d.h. dem Resultat wird der Nachkommateil abgeschnitten.

Mit dem Offset D werden negative Zahlen in den positiven Bereich gehoben. Darauf wird dann die Formel für positive n angewendet und der Offset wieder abgezogen.
Der Offset ist nötig, weil sonst für negative Zahlen r/2 auf die nächst kleinere Zahl gerundet würde.

Die Formel für neg. n gilt auch für pos. n, ist aber komplizierter.

Beispiele:

4.7 soll auf ganze Zahlen gerundet werden (r = 1):
ngerundet = 1 * int[(4.7 + 0.5) / 1] = 5

6.8 soll auf gerade Zahlen gerundet werden (r = 2):
ngerundet = 2 * int[(6.8 + 1) / 2] = 6

2.6 soll auf Fünferzahlen gerundet werden (r = 5):
ngerundet = 5 * int[(2.6 + 2.5) / 5] = 5

5.3 soll auf 0.5er Schritte gerundet werden (r = 0.5):
ngerundet = 0.5 * int[(5.3 + 0.25) / 0.5] = 5.5

-2.5 soll auf ganze Zahlen gerundet werden (r = 1):
D = int(2.5 / 1 + 1) * 1 = 3
ngerundet = 1 * int[(-2.5 + 3 + 0.5) / 1] - 3 = -2

-3.7 soll auf gerade Zahlen gerundet werden (r = 2):
D = int(3.7 / 2 + 1) * 2 = 4
ngerundet = 2 * int[(-3.7 + 4 + 1) / 2] - 4 = -4