auf ganze nächste zahl runden... umständlicher code

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
nepi
User
Beiträge: 23
Registriert: Montag 23. Juni 2008, 11:26

hallo zusammen..

habe einen code schnipsel, der mir auf die nächste ganze zahl rundet.. dies funktioniert soweit gut...

Code: Alles auswählen

int(round((zahl)+0.5))
jedoch habe ich ein problem, dass auch ganzzahlen die eigentlich so bleiben sollten auf die nächste ganze gerundet werden... bsp. die zahl 2 auf 3..

wie kann ich das elegant verhindern..? stehe auf dem schaluch.. meine lösung ist bisher hässlich und umständlich...

Code: Alles auswählen

amountFactor = 0
amountFraction = zahl # erstezahl / float(zweitezahl)
if (int(str(amountFraction).split(".")[1]) > 0):
        amountFactor = 0.5

print int(round((amountFraction)+amountFactor))
wie gehts schöner?
danke euch..
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Sieh dir mal im math-Modul die ceil()-Funktion an ...
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Sehe ich es richtig, dass du erst ab einem bestimmten Schwellwert aufrunden willst?

Code: Alles auswählen

int(math.ceil(zahl - 0.01))
Das Leben ist wie ein Tennisball.
nepi
User
Beiträge: 23
Registriert: Montag 23. Juni 2008, 11:26

keine ahnung wie ich ceil vergessen konnte.. :)

edit: wollte ursprünglich das problem ohne die math lib lösen, daher machte ich es über den +0.5 addieren weg..

geht jetzt super.. ein kleiner ceil import ist ja nicht tragisch...
danke euch!!

Code: Alles auswählen

int(math.ceil((erstezahl / float(zweitezahl))))
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

nepi hat geschrieben:edit: wollte ursprünglich das problem ohne die math lib lösen, daher machte ich es über den +0.5 addieren weg..
Warum?
nepi
User
Beiträge: 23
Registriert: Montag 23. Juni 2008, 11:26

gute frage.. ohne antwort.. dachte halt geht auch geschickt ohne..

naja jetzt ist ja alles ok... schönen abend euch allen noch..
Antworten