Seite 1 von 1
Aufrunden?
Verfasst: Montag 26. März 2007, 16:10
von DHK
Hallo,
gibt es eine Möglichkeit, eine Fließkommazahl immer aufzurunden? Wenn ich korrekt runden würde, müsste ich ja 0,67 auf 0,7 aufrunden und 0,42 auf 0,4 abrunden. Ich möchte aber, dass immer aufgerundet wird, sprich 0,67 -> 0,7 und 0,42 -> 0,5.
Ich habe mir schon mal die Funktion round() angesehen, aber das ist afaik nicht das, was ich suche.
Achja, und gibt es eine Möglichkeit, immer auf ganze Zahlen zu runden (0,5 -> 1; 2,67778 -> 3)?
Gruß
DHK
Verfasst: Montag 26. März 2007, 16:20
von Zap
Hi du, ich hab wahrscheinlich nicht die eleganteste Lösung für dich parat.
Aber ich hab mir an der Stelle als ich es brauchte eben so geholfen.
Code: Alles auswählen
>>> x = 2.1
>>> round(x+0.49)
3.0
>>> x = 2.0
>>> round(x+0.49)
2.0
>>> x = 2.9
>>> round(x+0.49)
3.0
Aber mich würde an der Stelle auch interessieren wie man das am besten macht. (bzw am elegantesten)
Gruß Zap
EDIT: Habe gerade gesehen das ich dir damit bei der ersten Problemstellung nicht helfen kann, sorry.
Verfasst: Montag 26. März 2007, 16:28
von CM
Code: Alles auswählen
>>> x = 0.42
>>> x
0.41999999999999998
>>> round(x+0.5)
1.0
Dann abschließende Konvertierung mit int, denn:
Code: Alles auswählen
>>> int(x+0.5)
0
>>> #aber
...
>>> int(round(x+0.5))
1
und last not least das decimal-Modul
Code: Alles auswählen
>>> from decimal import Decimal, ROUND_UP
>>> Decimal('0.42').quantize(Decimal('1.'), rounding=ROUND_UP)
Decimal("1")
Habe ich was vergessen?
Gruss,
Christian
Verfasst: Montag 26. März 2007, 16:35
von Rebecca
Code: Alles auswählen
>>> import math
>>> math.ceil(3.2)
4.0
>>> math.ceil(-3.7)
-3.0
(zum Abrunden gibts entprechend math.floor)
Verfasst: Montag 26. März 2007, 16:37
von CM
Ah, ja - das ist natürlich noch eleganter. Danke.
Verfasst: Montag 26. März 2007, 16:38
von rayo
Hi
So kannst du beliebig Aufrunden:
Code: Alles auswählen
def aufrunder(zahl, schritt_weite):
return math.ceil(zahl/schritt_weite)*schritt_weite
print aufrunder(0.67, 0.1)
print aufrunder(0.42, 0.1)
Auch auf 0.5 oder 0.2 genau Runden geht auch, einfach schrittweite ändern
Gruss
Verfasst: Montag 26. März 2007, 16:41
von DHK
Hallo, vielen Dank für euere zahlreichen Tipps, sie haben mir sehr geholfen.
Gruß
DHK
Verfasst: Dienstag 27. März 2007, 12:21
von HarryH
Hallo,
Für Zahlen größer 0 geht:
Für Zahlen kleiner 0 geht:
Verfasst: Dienstag 27. März 2007, 12:58
von BlackJack
Verfasst: Dienstag 27. März 2007, 13:30
von HarryH
Oh
Da habe ich meine Lösung nicht wirklich durchdacht. Sorry!
So müßte es nun gehen:
Code: Alles auswählen
def aufrunden(zahl):
result = int(zahl)
if result != zahl and zahl > 0:
result += 1
return result
print aufrunden(3.23)