Seite 1 von 1
Rundungsproblem
Verfasst: Dienstag 22. Juni 2010, 14:48
von andi24
Hallo zusammen,
Ich möchte mit folgendem Code auf einen Nettobetrag die MwSt rechnen:
Code: Alles auswählen
Bruttobetrag += float('%.2f' % round(Nettobetrag*(Steuersatz+100)/100,2))
Jedoch bekomme ich z.B. bei einem Nettobetrag von 9,50 EUR (wäre Brutto 11,305 EUR) als Bruttobetrag 11,30 EUR (statt 11,31 EUR) ausgegeben. Weiß jemand, wie ich das hinkriegen könnte?
Vielen Dank für jeden Hinweis,
Andi
Re: Rundungsproblem
Verfasst: Dienstag 22. Juni 2010, 14:59
von BlackJack
@andi24: Nimm da mal bitte die Zeichenkettenformatierung, `float()`, und `round()` heraus -- das ist alles Unsinn -- und zeige ein konkretes Beispiel mit konkreten Zahlen was man nachvollziehen kann ohne lange raten zu müssen.
Nachtrag:
Code: Alles auswählen
steuersatz = 19
nettobetrag = 9.50
bruttobetrag = nettobetrag * (steuersatz + 100) / 100.0
print '%0.2f' % round(bruttobetrag, 2)
Da bekomme ich das gewünschte Ergebnis ausgegeben.
Re: Rundungsproblem
Verfasst: Dienstag 22. Juni 2010, 15:34
von andi24
Hallo BlackJack,
vielen Dank für die schnelle Antwort!
Du hast recht, der Code funktioniert tatsächlich - aber nur mit der entsprechenden Python-Version. Ich hatte auf einem Server die Version 2.3.4 laufen, mit der 11.30 rausgekommen ist. Auf meinem lokalen Rechner (Python 2.6.5) kommt beim selben Code 11.31 raus.
Trotzdem vielen Dank für Deine Hilfe!!
Viele Grüße, Andi
Re: Rundungsproblem
Verfasst: Dienstag 22. Juni 2010, 15:50
von cofi
Das liegt eben daran, dass floats ungenau sind, vllt willst du das `decimal` Modul benutzen?