Mozilla's getting a new look. What do you think? https://mzl.la/brandsurvey

Math.round()


Die Math.round() Funktion gibt die nächstgelegenen Ganzzahl einer Zahl zurück (kaufmännisches Runden).

Syntax

Math.round(x)

Parameter

x
Eine Zahl.

Rückgabewert

Den Wert der gegebenen Zahl, der zur nächsten ganzen Zahl gerundet wird.

Beschreibung

Wenn der Nachkommateil des Parameters größer oder gleich 0.5 ist, wird der Parameter auf den nächst größeren ganzen Wert gerundet. Andernfalls wird der Parameter auf den nächst kleineren ganzen Wert gerundet.

Weil round() eine statische Methode von Math ist, benutzt man als Aufruf immer Math.round() und nicht in dem man zunächst ein Math-Objekt erzeugt um anschliessend die round()-Methode aufzurufen (Math ist kein Konstuktor).

Beispiele

Math.round(20.49);  // 20
Math.round(20.5);   // 21
Math.round(42);     // 42
Math.round(-20.5);  // -20
Math.round(-20.51); // -21

Dezimale Rundung

// Closure
(function() {
  /**
   * Decimal adjustment of a number.
   *
   * @param {String}  type  The type of adjustment.
   * @param {Number}  value The number.
   * @param {Integer} exp   The exponent (the 10 logarithm of the adjustment base).
   * @returns {Number} The adjusted value.
   */
  function decimalAdjust(type, value, exp) {
    // If the exp is undefined or zero...
    if (typeof exp === 'undefined' || +exp === 0) {
      return Math[type](value);
    }
    value = +value;
    exp = +exp;
    // If the value is not a number or the exp is not an integer...
    if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
      return NaN;
    }
    // Shift
    value = value.toString().split('e');
    value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
    // Shift back
    value = value.toString().split('e');
    return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
  }

  // Decimal round
  if (!Math.round10) {
    Math.round10 = function(value, exp) {
      return decimalAdjust('round', value, exp);
    };
  }
  // Decimal floor
  if (!Math.floor10) {
    Math.floor10 = function(value, exp) {
      return decimalAdjust('floor', value, exp);
    };
  }
  // Decimal ceil
  if (!Math.ceil10) {
    Math.ceil10 = function(value, exp) {
      return decimalAdjust('ceil', value, exp);
    };
  }
})();

// Round
Math.round10(55.55, -1);   // 55.6
Math.round10(55.549, -1);  // 55.5
Math.round10(55, 1);       // 60
Math.round10(54.9, 1);     // 50
Math.round10(-55.55, -1);  // -55.5
Math.round10(-55.551, -1); // -55.6
Math.round10(-55, 1);      // -50
Math.round10(-55.1, 1);    // -60
Math.round10(1.005, -2);   // 1.01 -- compare this with Math.round(1.005*100)/100 above
// Floor
Math.floor10(55.59, -1);   // 55.5
Math.floor10(59, 1);       // 50
Math.floor10(-55.51, -1);  // -55.6
Math.floor10(-51, 1);      // -60
// Ceil
Math.ceil10(55.51, -1);    // 55.6
Math.ceil10(51, 1);        // 60
Math.ceil10(-55.59, -1);   // -55.5
Math.ceil10(-59, 1);       // -50

PHP ähnliche Rundungsmethode

Der Quelltext unten zeigt, wie man eine eigene Version von Math.round unter einem eigenen Namensraum mit einem Parameter für die Nachkommastellen erstellt. Leider unterstützt diese Methode keinen Konvertierung zu und von Strings, wie das oben stehende Beispiel zur dezimalen Rundung. Dabei arbeitet diese Methode ähnlich wie bei PHP und Excel, wo bei dem Wert 1 für die Nachkommastellen auf eine Nachkommastelle Rundet und der Wert -1 auf die Zehnerstellen rundet.

var myNamespace = {};

myNamespace.round = function(number, precision) {
    var factor = Math.pow(10, precision);
    var tempNumber = number * factor;
    var roundedTempNumber = Math.round(tempNumber);
    return roundedTempNumber / factor;
};

myNamespace.round(1234.5678, 1); // 1234.6
myNamespace.round(1234.5678, -1); // 1230

Spezifikationen

Spezifikation Status Kommentar
ECMAScript 1st Edition. Standard Initiale Definition. Integriert in JavaScript 1.0.
ECMAScript 5.1 (ECMA-262)
Die Definition von 'Math.round' in dieser Spezifikation.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Math.round' in dieser Spezifikation.
Standard

 

ECMAScript 2017 Draft (ECMA-262)
Die Definition von 'Math.round' in dieser Spezifikation.
Entwurf  

Browserkompatibilität

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Allgemeine Unterstützung (Ja) (Ja) (Ja) (Ja) (Ja)
Feature Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Allgemeine Unterstützung (Ja) (Ja) (Ja) (Ja) (Ja)

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
 Mitwirkende an dieser Seite: schlagi123, DanMyshkin, michaelkoehne
 Zuletzt aktualisiert von: schlagi123,