La funció Math.round()
retorna el valor d'un nombre arrodonit al nombre sencer més proper.
Sintaxi
Math.round(x)
Paràmetres
x
- Un nombre.
Descripció
Si la porció fraccional del nombre és 0.5 o major, l'argument s'arrodoneix al següent nombre sencer més gran. Si la porció fraccional del nombre és menor de 0.5 l'argument és arrodonit al següent nombre sencer més petit.
Com que round()
és un mètode estàtic de Math
, sempre s'utilitza com Math.round()
en comptes de com un mètode d'un objecte Math
creat (Math
no és un constructor).
Exemples
Utilitzar Math.round()
// Retorna el valor 20 x = Math.round(20.49); // Retorna el valor 21 x = Math.round(20.5); // Retorna el valor -20 x = Math.round(-20.5); // Retorna el valor -21 x = Math.round(-20.51); // Retorna el valor 1 (!) // Fixeu-vos en l'error d'arrodoniment degut a la poc precisa aritmètica de punt flotant // Compareu això amb Math.round10(1.005, -2) de l'exemple de sota x = Math.round(1.005*100)/100;
Arrodoniment decimal
// Closure (function() { /** * Ajustament decimal d'un nombre * * @param {String} type El tipus d'ajustament. * @param {Number} value El nombre. * @param {Integer} exp L'exponent (el logaritme en base 10 de la base a ajustar). * @returns {Number} El valor ajustat. */ function decimalAdjust(type, value, exp) { // Si l'exponent és undefined o zero... if (typeof exp === 'undefined' || +exp === 0) { return Math[type](value); } value = +value; exp = +exp; // Si el valor no és un nombre o l'exponent no és un nombre sencer... if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { return NaN; } // Desplaçament value = value.toString().split('e'); value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))); // Desfer el desplaçament value = value.toString().split('e'); return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)); } // Arrodoniment decimal if (!Math.round10) { Math.round10 = function(value, exp) { return decimalAdjust('round', value, exp); }; } // Floor decimal if (!Math.floor10) { Math.floor10 = function(value, exp) { return decimalAdjust('floor', value, exp); }; } // Ceiling decimal if (!Math.ceil10) { Math.ceil10 = function(value, exp) { return decimalAdjust('ceil', value, exp); }; } })(); // Arrodoniment 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 -- compareu aquest resultat amb Math.round(1.005*100)/100 de l'exemple de sobre // 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
Especificacions
Especificació | Estat | Comentaris |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Definició inicial. Implementat a JavaScript 1.0. |
ECMAScript 5.1 (ECMA-262) The definition of 'Math.round' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Math.round' in that specification. |
Standard |
Compatibilitat amb navegadors
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Característica | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |