mozilla
Your Search Results

    Math.round Redirect 1

    Summary

    The Math.round() function returns the value of a number rounded to the nearest integer.

    Syntax

    Math.round(x) 

    Parameters

    x
    A number.

    Description

    If the fractional portion of number is .5 or greater, the argument is rounded to the next higher integer. If the fractional portion of number is less than .5, the argument is rounded to the next lower integer.

    Because round is a static method of Math, you always use it as Math.round(), rather than as a method of a Math object you created.

    Examples

    Example: Using Math.round

    // Returns the value 20
    x = Math.round(20.49);
    
    // Returns the value 21
    x = Math.round(20.5);
    
    // Returns the value -20
    x = Math.round(-20.5);
    
    // Returns the value -21
    x = Math.round(-20.51);
    
    // Returns the value 1 (!)
    // Note the rounding error because of inaccurate floating point arithmetics
    // Compare this with Math.round10(1.005, -2) from the example below
    x = Math.round(1.005*100)/100;
    

    Example: Decimal rounding

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

    Specifications

    Specification Status Comment
    ECMAScript 1st Edition. Implemented in JavaScript 1.0. Standard Initial definition.
    ECMAScript Language Specification 5.1th Edition (ECMA-262) Standard  
    ECMAScript Language Specification 6th Edition (ECMA-262) Draft  

    Browser compatibility

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
    Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
    Feature Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
    Basic support (Yes) (Yes) (Yes) (Yes) (Yes)

    See also

    Document Tags and Contributors

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