VBScript: Zahlen runden?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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)
MarkusGenervt  02.07.2018, 00:48

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–
0
PWolff  02.07.2018, 23:42

Microsoft folgt hier der IEEE-Regel "zur nächsten geraden Zahl"

1
MarkusGenervt  02.07.2018, 23:46
@PWolff

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.

0

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 :)