Seite 1 von 1

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

Verfasst: Montag 20. April 2009, 16:23
von nepi
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..

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

Verfasst: Montag 20. April 2009, 16:30
von numerix
Sieh dir mal im math-Modul die ceil()-Funktion an ...

Verfasst: Montag 20. April 2009, 16:31
von EyDu
Sehe ich es richtig, dass du erst ab einem bestimmten Schwellwert aufrunden willst?

Code: Alles auswählen

int(math.ceil(zahl - 0.01))

Verfasst: Montag 20. April 2009, 16:40
von nepi
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))))

Verfasst: Montag 20. April 2009, 17:00
von derdon
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?

Verfasst: Montag 20. April 2009, 17:03
von nepi
gute frage.. ohne antwort.. dachte halt geht auch geschickt ohne..

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