Seite 1 von 1
Decimal richtig runden
Verfasst: Freitag 27. Januar 2012, 11:49
von andi24
Hallo zusammen,
bis gerade eben hätte ich eigentlich gedacht, ich hätte das Thema Runden geschnallt, aber jetzt wurde ich eines besseren belehrt

Ich möchte einen als Decimal gespeicherten Euro-Betrag folgendermaßen auf 2 Nachkommastellen runden:
Code: Alles auswählen
from decimal import *
betrag=Decimal("21.0349")
print betrag.quantize(Decimal('.01'), rounding=ROUND_HALF_UP)
ergibt aber
21,03 statt 21,04
Kann mir jemand sagen, was ich hier falsch mache?
Vielen Dank!
Re: Decimal richtig runden
Verfasst: Freitag 27. Januar 2012, 12:17
von /me
andi24 hat geschrieben:Kann mir jemand sagen, was ich hier falsch mache?
Du denkst falsch. Das Ergebnis ist völlig korrekt. 21,0349 auf zwei Stellen gerundet ist 21,03. Erst ein Wert von mindestens 21,035 ergäbe 21,04.
Wenn du immer aufrunden willst, dann benötigst du ROUND_UP und nicht ROUND_HALF_UP.
Re: Decimal richtig runden
Verfasst: Freitag 27. Januar 2012, 12:53
von andi24
Hallo \me,
generell aufrunden möchte ich nicht, aber wenn ich 21,0349 von rechts her runde wird ja erstmal 21,035 draus und dann eben am Ende 21,04 ... so lang mich da jetzt meine Mathematik nicht im Stich lässt

Re: Decimal richtig runden
Verfasst: Freitag 27. Januar 2012, 13:01
von Hyperion
andi24 hat geschrieben:
generell aufrunden möchte ich nicht, aber wenn ich 21,0349 von rechts her runde wird ja erstmal 21,035 draus und dann eben am Ende 21,04 ... so lang mich da jetzt meine Mathematik nicht im Stich lässt

Seit wann rundet man sukzessive? Man guckt sich doch eigentlich nur die Ziffer nach der letzten beizubehaltenden Ziffer an...
Re: Decimal richtig runden
Verfasst: Freitag 27. Januar 2012, 13:11
von andi24
Ok, dann hatte ich da wohl einen Denkfehler.
Vielen Dank euch beiden und ein schönes Wochenende!
Re: Decimal richtig runden
Verfasst: Freitag 27. Januar 2012, 13:12
von Rekrul
\me hat geschrieben:Du denkst falsch. Das Ergebnis ist völlig korrekt. 21,0349 auf zwei Stellen gerundet ist 21,03. Erst ein Wert von mindestens 21,035 ergäbe 21,04
Stimmt nur für das kaufmännische Runden. Beim mathematischen Runden hat der OP schon recht.
EDIT: Oops ... hat er doch nicht.
Re: Decimal richtig runden
Verfasst: Freitag 27. Januar 2012, 13:16
von Hyperion
Rekrul hat geschrieben:
Stimmt nur für das kaufmännische Runden. Beim mathematischen Runden hat der OP schon recht.
Bist Du Dir sicher? Ich zitiere mal
wikipedia:
wikipedia (Rundung: Mathematische Rundung) hat geschrieben:
Kaufmännisches und unverzerrtes mathematisches Runden unterscheiden sich nur darin, wohin eine Zahl genau in der Mitte zwischen zwei Zahlen mit der gewählten Anzahl von Dezimalziffern gerundet wird.
Wir haben hier ja keine "5"...