Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

VBScript: Runden von Zahlen





Frage

Für euch sicherlich ein Klacks, aber ich beiß mir die Zähne aus. Wie kann ich eine Zahl auf zwei Nachlommastelle runden? [code]x = Round(12345678/1024/1024)[/code] ergibt ganze Zahlen. Ist auch nicht schlecht, gefällt mir aber nicht. [code]x = Round(12345678/1024/1024[2])[/code] sowie [code]x = Round(12345678/1024/1024[,2])[/code] ergibt Fehlermeldung. Danke an alle. Gruß [u]MasterOfHardness[/u]

Antwort 1 von MasterOfHardness

Nachtrag:

x = Round(12345678/1024/1024[.2])


ergibt auch 'ne Fehlermeldung

Antwort 2 von semi

Versuch's so

round( (12345678/1024/1024)*100 ) / 100

Antwort 3 von robbie17

@masterofhardness
so ists richtig

x = Round(12345678/1024/1024,2)

du warst schon nah dran
die eckige klammer um [,2] bedeutet
daß die angabe der stellenanzahl optional ist
also auch weggelassen werden kann

Antwort 4 von MasterOfHardness

Klasse semi. Damit geht's!

Doch ich war inzwischen auch nicht faul *grins*. Die Sache ist ganz einfach:

x = Round(12345678/1024/1024,2)


hat zum Erfolg geführt. Ich hatte in der Hilfe

Zitat:
Beschreibung

Gibt eine Zahl zurück, die auf eine festgelegte Anzahl an Dezimalpunkten gerundet wurde.

Syntax

Round(Ausdruck [,AnzahlAnDezimalpunktn )

Die Syntax der Round-Funktion besteht aus folgenden Teilen:

[i]Teil Beschreibung

Ausdruck Erforderlich. Numerischer Ausdruck, der gerundet wird.

AnzahlAnDezimalpunkten Optional. Zahl, die angibt, wie viele Stellen rechts vom Dezimalpunkt beim Runden berücksichtigt werden. Wird dieser Wert ausgelassen, gibt die Round-Funktion Ganzzahlen zurück.


die eckigen Klammern fälschlicherweise als Bestandteil der Anweisung betrachtet. Die Dinger zeigen natürlich nur an, dass das Argument optional ist.

Nun, ich danke dir.

Gruß MasterOfHardness

Antwort 5 von MasterOfHardness

@robbie17
Tschuldigung, sehe jetzt erst, dass du gepostet hast. Dank auch dir. Wie du siehst, bin ich auch auf die Lösung gekommen *grins*

Antwort 6 von robbie17

.. und hast mir dabei auch geholfen
wußte vorher gar nicht daß es diese funktion gibt
habs auch immer wie semi gemacht nur mit cint bzw clng

Antwort 7 von PeterMace

Allerdings hat diese Funktion ein Problem.
Wenn man z.B. 1,225 auf zwei Nachkommastellen damit runden möchte kommt 1,22 raus.
x= 1,225
Round(x,2) => 1,22

Scheinbar rundet die Funktion zur nächsten Integer. Wenn beide Zahlen gleich weit entfernt sind geht sie zur nächsten runden Zahl. Also gefällt ihr in dem fall die 2 besser als die 3. Anderes Beispiel
x = 1,235
Round(x,2) => 1,24

Scheint ein bekanntes Problem zu sein. Daher bringt die Rundungsfunktion in meinen Augen nicht unbedingt viel.

Antwort 8 von heinz ketchup

Zitat:
Scheint ein bekanntes Problem zu sein.


bekannt schon - aber kein problem
die funktion rundet lediglich wissenschaftlich korrekt!

wenn beide zahlen gleich weit entfernt sind
wird abgerundet wenn die letzte vorkommastelle gerade ist
und aufgerundet wenn sie ungerade ist

so soll gewährleistet werden daß statistisch genauso oft auf- wie abgerundet wird
denn wenn man immer aufrundet (wie in der schule) verfälscht dies den mittelwert einer datenmenge!

Antwort 9 von PeterMace

Nun, dass versuche mal einen Kunden zu erklären, der diese Rundung in einem Programm benutzen möchte und ihm dort Geld verloren geht..

Antwort 10 von heinz ketchup

es steht dir ja frei eigene funktionen zu programmieren
die sich nicht an mathematische konventionen halten :)

Antwort 11 von PeterMace

Blieb mir ja leider nichts anderes übrig. Aber man erspart sich ja gerne Arbeit ;)

Antwort 12 von heinz ketchup

stimmt :)

aber mal was andreas:
wie hast du gemerkt daß ich gepostet habe?
hast du den thread auf der startseite vom sn gesehen
oder nur im javascriptforum?

ich kann den thread nämlich nicht auf der startseite sehen ..

Antwort 13 von PeterMace

*kopf kratz* Ich habe die Mailbenachrichtigung bei einer Antwort an, daher sehe ich es wenn du postest.