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
We're converting our compatibility data into a machine-readable JSON format.
This compatibility table still uses the old format,
because we haven't yet converted the data it contains.
Find out how you can help!
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) |