[MaxScript] Zahlenwerte runden


#1
Hallo,

ich suche eine Funktion/Befehl um Zahlenwerte (integer) vor dem Komma zu runden.
Einen Befehl wie ROUND oder so scheint es nicht zu geben.

Das einzige was ich bisher gefunden habe war CEIL und FLOOR - aber so richtig ist das nicht was ich suche.

Über Hilfe würde ich mich sehr freuen.
Maddin
 

Zinken

Erfahrenes Mitglied
#2
Einen direkten Befehl gibt es leider nicht - den musst Du Dir schon selbst schreiben... ;-)
z.B. so:
Code:
fn round num = (
	local rounded = floor num
	if floor(num + 0.5) > rounded do rounded = ceil num
	rounded as integer
)
Noch als kleine Randbemerkung: Integer sind Ganzzahlen, haben also kein Komma. Kommazahlen sind in Maxscript üblicherweise vom Typ 'float'.
 
#3
Hey Zinken vielen Dank für die Antwort - jau so hab ichs bisher auch gelöst. Ich wollts nur nicht wahrhaben, dass es wirklich keine festimplementierte ROUND-Funktion gibt.

maddin
 
#4
Vor diesem pauschalen Vorgehen ist generell zu warnen. Es zeugt von hoher Kultur bei den Machern von 3D Studio Max keine Round oder allgemeine Funktion für das Runden eingebaut zu haben. Das es überhaupt Taschenrechner oder Programmiersprachen gab, die eine solche Funktion angeboten haben ist eine Fehler. Runden ist stets für den mathematischen Kontext angepasst und numerisch stabil auszuführen. Der Entwurf einer geeigneten numerischen Stabilitätsprüfung des Rundens ist aufwendig und kann nur von Fachpersonal qualifiziert ausgeführt werden. Aus dem mathematischen Zusammenhang gerissen kann diese Frage zu einer pauschalen Antwort reizen. Ein gutes Beispiel sind Nullsummen, um von endlichen Reihen zu den trigonometrischen Funktionen zu gelangen. Die trigonometrischen Funkten geben viele Anlässe Nullsummen abzuleiten. Deshalb ohne Fallunterscheidungen immer Hände weg vom Runden, wenn Trigonometrische Funktionen im Spiel sind.
 

Neue Beiträge