Wissenschaftlich runden in LibreOffice

sia

gesperrt
Registriert
26 März 2015
Beiträge
5.926
Ort
FFM (NSFW)
Hallo Leute,

Ich muss für einige Berechnungen . Bei 0-4 wird abgerundet, bei 6-9 aufgerundet und bei 5 wird auf die nächste gerade Zahl gerundet.

Beispiele:

0,5 → 0
1,1 → 1
1,8 → 2
1,5 → 2
2,5 → 2

Wie mache ich das in LibreOffice? Eine eigene Funktion gibt es ja soweit ich weiß nicht...
 
Zuletzt bearbeitet:
Mathematische Funktionen in LibreOffice: (für Calc)
Allerdings verhält sich RUNDEN entgegen der Norm und rundet bei 5 prinzipiell auf.

Beispiel:
[src=text]RUNDEN(0,40;0)=0
RUNDEN(0,49;0)=0
RUNDEN(0,50;0)=1
RUNDEN(0,51;0)=1[/src]

Um korrekt zu runden, müsstest du dir eine entsprechende Funktion schreiben.
Möchtest du auf 2 Dezimalen runden, könnte deine Funktion zum Beispiel so aussehen:

[src=text]IF(
x > ABRUNDEN(x; 2) + 0,005;
AUFRUNDEN(x; 2);
IF(
x < ABRUNDEN(x; 2) + 0,005;
ABRUNDEN(x; 2);
IF(
GERADE(ABRUNDEN(x; 0);
ABRUNDEN(x; 0);
AUFRUNDEN(x; 0)
)
)
)[/src]

Vereinfacht:
[src=text]IF(x>ABRUNDEN(x;2)+0,005;AUFRUNDEN(x;2);IF(x<ABRUNDEN(x;2)+0,005;ABRUNDEN(x;2);IF(GERADE(ABRUNDEN(x;0);ABRUNDEN(x;0);AUFRUNDEN(x;0))))[/src]

Übersetzt:
[src=text]falls
x[exakt] größer x[abgerundet]+0,005 (also für eine Zahl a,bcd ist d > 5)
dann wird aufgerundet
sonst falls
x[exakt] < als x[abgerundet]+0,005 (also für eine Zahl a,bcd ist d < 5)
dann wird abgerundet
sonst (also für eine Zahl a,bcd ist d = 5)
falls x[abgerundet] gerade
dann abrunden
sonst aufrunden[/src]

Hier siehst du die Auswertung für interessante Fälle:
Für x = 1,0051 (soll aufgerundet werden)
Zeile 2: prüfe 1,0051 > 1,005 => wahr
Zeile 3: aufrunden
-- ende

Für x = 1,0049 (soll abgerundet werden)
Zeile 2: prüfe 1,0049 > 1,005 => falsch (springe zu Zeile 4)
Zeile 4/5: prüfe 1,0049 < 1,005 => wahr
Zeile 6: abrunden
-- ende

Für x = 1,005 (soll auf 2 aufgerundet werden)
Zeile 2: prüfe 1,005 > 1,005 => falsch (springe zu Zeile 4)
Zeile 4/5: prüfe 1,005 < 1,005 => falsch (springe zu Zeile 7)
Zeile 7/8: prüfe 1 gerade => falsch (springe zu Zeile 10)
Zeile 10: aufrunden
-- ende

Für x = 2,005 (soll auf 2 abgerundet werden)
Zeile 2: prüfe 2,005 > 2,005 => falsch (springe zu Zeile 4)
Zeile 4/5: prüfe 2,005 < 2,005 => falsch (springe zu Zeile 7)
Zeile 7/8: prüfe 2 gerade => wahr
Zeile 9: abrunden
-- ende

Komplexer wird es, wenn du die signifikanten Stellen zur Rundung dynamisch halten möchtest.
 
Zurück
Oben