JS: Rundung auf zwei Nachkommastellen

Da die JavaScript über „Math“ keine Nachkommastellen kennt und das Ergebnis kaufmännisch auf die nächste Ganzzahl rundet, liegt es nahe, eine Funktion zu schreiben, die einem das Ergebnis kaufmännisch rundet. Bei der Gelegenheit sorgen wir auch für zwei Nullen, wenn nur eine Ganzzahl übergeben wird.

Zum Beispiel: Wir legen zwei Funktionen an. Die erste Funktion „kaufm_rundung“ ist die eigentliche Berechnung der kaufmännischen Rundung. Ihr wird die Variable x übergeben. Intern legt sie die Variable e an und rundet das x auf zwei Nachkommastellen. Dann sorgt sie noch für Nullen als Nachkommastellen, so dass beispielweise aus „3“ eine „3.00“ wird. Das Ergebnis gibt die Funktion per return zurück.
Daher ist noch eine weitere Funktion notwendig. Diese heißt hier einfach „tester“. Dieser wird die Variable „v“ aus einer Form im Body übergeben. Im Body befindet sich eine Textbox und ein Button. Beim Klick auf den Button übergeben wir den Wert der Textbox an die Funktion. Wieder in der Funktion „tester“ hat dann „v“ den Wert der Textbox. Wir legen der Einfachheit halber eine Variable „ergebnis“ an. Dieser geben wir das Ergebnis der Funktion „kaufm_rundung“ und geben das Ergebnis per Alert aus.
Das wirklich neue hier ist die Möglichkeit, das Ergebnis einer Funktion an eine Variable direkt zu übergeben („var ergebnis = kaufm_rundung(v);“). Somit aufrufbar kann die Funktion „kaufm_rundung“ von beliebigen Funktionen aufgerufen werden und das Ergebnis jederzeit weiter verarbeitet werden.
Ebenfalls neu ist die Möglichkeit, Werte („Value“) von Textboxen an eine Funktion zu übergeben. Dies wird mit „testform.kaufmaennische_rundung.value“ erreicht. Sie sprechen also den Wert der Textbox über den Namen der umgebenden Form, dann der Name der Textbox und dann das Attribut „value“ an.

function kaufm_rundung(x) 
{
  //Lege Variable e an, sorge für zwei Nachkommastellen und parse das Ergebnis als String
   var e = (Math.round(x * 100) / 100).toString();

   //Prüfe die Nachkommastellen
   e += (e.indexOf('.') == -1)? 
   return e.substring(0, e.indexOf('.') + 3);
}

function tester(v)
{
   //Der Variable v wird mit dem Klick auf den Button Berechne der Wert der Textbox zugewiesen
   //Nun ruf die Funktion kauf_rundung auf speicher das Ergebnis in der Variable ergebnis
   var ergebnis = kaufm_rundung(v);
   //Gib das Ergebnis aus
   alert (ergebnis);
}
</script>

<form enctype="application/x-www-form-urlencoded" method="get">Kaufmännische Rundung 
<input name="kaufmaennische_rundung" size="20" type="text" value="50.123456" />
<input onclick="tester(testform.kaufmaennische_rundung.value);" type="submit" value="Berechne" />
</form>

Schreibe einen Kommentar