Python 3:
Code: Alles auswählen
In [7]: [(round(x), int(x)) for x in [0.5, 1.5, 2.5, 3.5, 4.5]]
Out[7]: [(0, 0), (2, 1), (2, 2), (4, 3), (4, 4)]
Code: Alles auswählen
In [7]: [(round(x), int(x)) for x in [0.5, 1.5, 2.5, 3.5, 4.5]]
Out[7]: [(0, 0), (2, 1), (2, 2), (4, 3), (4, 4)]
Ah ... ich ahne was Du ansprichst. Das klingt logisch *tu*__blackjack__ hat geschrieben: ↑Mittwoch 13. Februar 2019, 13:50 Da ist es IMHO besser einfach abzuschneiden, und damit die Möglichkeit zu haben basierend darauf eigene Rundungsarten zu implementieren. Das ist mit einfach abschneiden nämlich einfacher als wenn das jetzt beispielsweise kaufmännisch runden würde.
Code: Alles auswählen
def kround(number):
if (number - int(number)) >= 0.5:
return int(number) + 1
else:
return int(number)
numbers = [n + 0.5 for n in range(1,10)]
knumbers = [kround(n) for n in numbers]
wnumbers = [round(n) for n in numbers]
print('Summe:', sum(numbers))
print('Summe aus kaufmännisch gerundeten Zahlen:', sum(knumbers))
print('Summe aus wissenschaftliche gerundeten Zahlen:', sum(wnumbers))
Code: Alles auswählen
def kround(number):
return int(number) + (abs(number) % 1 >= 0.5) * ((number > 0) * 2 - 1)
Code: Alles auswählen
def kround2(number):
sign = -1 if number < 0 else 1
rest = abs(number) % 1
number = int(number)
if rest >= 0.5:
return number + sign
else:
return number
Code: Alles auswählen
def kround(x):
fractional, integer = math.modf(x)
return int(integer) + (-1 if x < 0 else 1) * (abs(fractional) >= 0.5)