VBScript: Zahlen runden?
Hallo ich habe ein Programm. Ja ach ne XD
Ich rechne dort die Prozente u.s.w. aus und hat auch alles geklappt. Nur jetzt hat man 36 Punkte und das Programm hat gerechnet, dass ab 36,40 eine 3 hat und bis zu 35,40 eine Vier. Nun möchte ich das runden uzwar so: 4.48 = 5, 4.2 = 4 u.s.w.
Dass heißt wenn es eine Nachkommastelle gibt das es auf ...,5 rundet.
3 Antworten
Also wenn ich Dein Babylon richtig entziffert habe, möchtest Du einen Betrag mathematisch runden, richtig?
Demnach soll alles ab einem Betrag von 0,5 auf 1 aufgerundet werden und alles darunter abgerundet.
Das geht mit der Round-Funktion:
Round(4.48, 0) → 4
Round(4.48, 1) → 4.5
Ich kann es gerade nicht testen (Linux), ob hiermit der Betrag oder der Wert gerundet wird, wie bei Fix und Int, daher müsstest Du das mal selbst testen und zur Not dieses Konstrukt nehmen:
result = Sgn(fValue) * Round(Abs(fValue), nDecPlaces)
Ach, ich habe schon ewig nicht mehr mit VBS gebastelt. Bash ist so viel unkomplizierter. 😆
Ich hatte eigentlich zuerst auch eine eigene Funktion hier posten wollen, aber dann viel mir doch wieder die Round-Funktion ein und ich dachte, ich erfinde wieder das Rad neu.
Jaaa, hätt ich mal stehen lassen sollen … 😆😆😆
Kurze Zusammenfassung: Mit 10^Nachkomma multiplizieren, den Einer auf >=5 prüfen, auf volle Zehner runden und wieder durch 10^Nachkomma dividieren.
Nachtrag:
Du musst natürlich erst mal die Prozentwerte in Noten-Werte umrechnen. Dann kannst Du diese aber relativ leicht in Noten-Namen umrechnen.
Beim Umrechnen und Runden von "+" und "-" Noten-(Namen) musst Du immer ab der Hälfte des Dezimalwertes zwischen zwei Drittel-Noten aufrunden, also in Sechstel-Schritten:
2,0 = 2
2,15 ≈ 2
2,16̅ ≈ 2–
2,3̅ = 2–
2,49 ≈ 2–
2,5 ≈ 3+
2,6̅ = 3+
2,82 ≈ 3+
2,83̅ ≈ 3
3,0 = 3
Das ist natürlich alles Andere als einfach. Der Trick ist dann einfach die Note mit 6 zu multiplizieren, um so einen Integer-Schwellenwert zu erhalten:
(>=15;<21) → 3
(>=15;<17) → 3+
(>=17;<19) → 3
(>=19;<21) → 3–
In VBS gibt es keine vorimplementierten Funktionen zum Runden von Zahlen. Das heißt, du musst dir einen eigenen Algorithmus schreiben.
Einen ersten Ansatz für dein Beispiel 4.48 > 5 findest du vielleicht hier. Für andere Fälle musst du dir einmal selbst Gedanken machen.
HAT SICH GELÖST aber trotzdem danke für eure Antworten :)
Die Zahl einfach mit 2 multiplizieren, auf Einer runden, durch 2 teilen. So einfach gehts :)
Microsoft folgt hier der IEEE-Regel "zur nächsten geraden Zahl"