JavaScript/Objekte/Math/round

Aus SELFHTML-Wiki
< JavaScript‎ | Objekte‎ | Math
Wechseln zu: Navigation, Suche

Die Methode Math.round() erwartet als Parameter eine Zahl und liefert die kaufmännisch gerundete Ganzzahl dieser Zahl zurück. Wenn die übergebene Zahl eine Ganzzahl ist, bleibt sie unverändert.

Runden einer Zahl auf Einer ansehen …
  function Berechnen (zahl) {
	  zahl = parseFloat(document.getElementById('eingabe').value.replace(',', '.'));
	  zahl = Math.round(zahl);
	  const elem = document.getElementById('ausgabe');
	  elem.innerHTML = zahl;
  }
Werte von input-Feldern sind Zeichenketten. In dieser Zeichenkette wird ein ggf. vorhandenes Dezimalkomma durch den Dezimalpunkt ersetzt. Anschließend wird die Zeichenkette in eine Zahl umgewandelt. Diese Zahl wird kaufmännisch auf Einer gerundet. Das Ergebnis ist also eine ganze Zahl.
Beachten Sie: Dieses Beispiel funktioniert bei komplexeren Zahlenformaten (strukturierende Zeichen, abgetrennte Zehnerpotenzen) nicht.
Beachten Sie: In JavaScript werden Dezimalzahlen mit einem Punkt geschrieben. Damit bei einer Eingabe eines Kommas keine Fehlermeldung NaN ausgeworfen wird, wird die eingegebene Zahl wenn nötig mit replace() passend formatiert.

Möchten Sie auf größere Werte runden (Zehner, Hunderter, Tausender), dividieren Sie den Wert zunächst durch 10, 100 oder 1000, wenden dann Math.round() an und multiplizieren das Ergebnis anschließend wieder mit demselben Faktor.

Runden einer Zahl auf Zehner, Hunderter ansehen …
<select id="stellen">
  <option value="3">Tausender</option>
  <option value="2">Hunderter</option>
  <option value="1">Zehner</option>
  <option value="0" selected>Einer</option>
</select>
faktor = Math.pow(10,exponent);
zahl = Math.round(zahl/faktor) * faktor;

Im Selectfeld erfolgt die Übergabe des Exponenten, etwa 2 für 10², Runden auf Hunderter. Danach erfolgt die weiter oben schon beschriebene Rundung (erst Division, dann Runden, anschließend Multiplikation).


Prinzipiell funktioniert das mit negativen Exponenten auch für das Runden auf Nachkommastellen. Beim Rechnen mit Dezimalzahlen entstehen dabei aber Rundungsfehler, die sich in zu vielen Dezimalstellen äußern können. Verwenden Sie daher zum Runden auf Nachkommastellen lieber die Methode toFixed(). Damit man mit dem gerundeten Wert auch ohne störende Nebenwirkungen weiter rechnen kann, sollte man den gerundeten Wert danach mit parseFloat() wieder in eine Zahl zurückwandeln.

Weblinks

MDN: Math.round