Faustregel runden

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
Freumel
User
Beiträge: 69
Registriert: Donnerstag 25. Januar 2018, 13:47

Hallo zusammen,

ich würde gerne Werte in 50 und 25 - Schritten runden. Das geht doch bestimmt eleganter als in einer if else Schleife, oder?

Code: Alles auswählen

def roundValue(value):
	if value < 75:
		return 50
	elif value < 125:
		return 100
	elif value < 175:
		return 150
	elif value < 225:
		return 200
	else:
		return 250
Aber das kann es so ja nicht sein. Ich betrachte nur Werte zwischen 50 und 250. Falls der Bereich verändert wird ... gefühlt viel zu stümperhaft gelöst so.

Vielen Dank schonmal!
Sirius3
User
Beiträge: 18269
Registriert: Sonntag 21. Oktober 2012, 17:20

Schulisches Runden, nur halt mit dem 50fachen:

Code: Alles auswählen

(value + 25) // 50 * 50
Benutzeravatar
DeaD_EyE
User
Beiträge: 1236
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

So in etwa?

Code: Alles auswählen

def round_x(value, factor=25):
    return (value + factor / 2) // factor * factor
Der Trick dabei ist die integer division. Dezimalstellen werden bei der division weggelassen.
Dadurch kommt man dann auf die runden werte, nachdem man mit dem Faktor wieder multipliziert.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten