Rundungsproblem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
andi24
User
Beiträge: 56
Registriert: Freitag 5. März 2010, 11:42

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
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.
andi24
User
Beiträge: 56
Registriert: Freitag 5. März 2010, 11:42

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das liegt eben daran, dass floats ungenau sind, vllt willst du das `decimal` Modul benutzen?
Antworten