Math.round()

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)

Vegeu també

Document Tags and Contributors

 Contributors to this page: enTropy
 Last updated by: enTropy,