--- title: Math.round() slug: Web/JavaScript/Reference/Global_Objects/Math/round translation_of: Web/JavaScript/Reference/Global_Objects/Math/round original_slug: Web/JavaScript/Referencia/Objectes_globals/Math/round ---
La funció Math.round() retorna el valor d'un nombre arrodonit al nombre sencer més proper.
Math.round(x)
xSi 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).
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;
// 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
| Especificació | Estat | Comentaris |
|---|---|---|
| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Definició inicial. Implementat a JavaScript 1.0. |
| {{SpecName('ES5.1', '#sec-15.8.2.15', 'Math.round')}} | {{Spec2('ES5.1')}} | |
| {{SpecName('ES6', '#sec-math.round', 'Math.round')}} | {{Spec2('ES6')}} |
| Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Suport bàsic | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
| Característica | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Suport bàsic | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |