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