W3cubDocs

/JavaScript

Math

Math is a built-in object that has properties and methods for mathematical constants and functions. Not a function object.

Description

Unlike the other global objects, Math is not a constructor. All properties and methods of Math are static. You refer to the constant pi as Math.PI and you call the sine function as Math.sin(x), where x is the method's argument. Constants are defined with the full precision of real numbers in JavaScript.

Properties

Math.E
Euler's constant and the base of natural logarithms, approximately 2.718.
Math.LN2
Natural logarithm of 2, approximately 0.693.
Math.LN10
Natural logarithm of 10, approximately 2.303.
Math.LOG2E
Base 2 logarithm of E, approximately 1.443.
Math.LOG10E
Base 10 logarithm of E, approximately 0.434.
Math.PI
Ratio of the circumference of a circle to its diameter, approximately 3.14159.
Math.SQRT1_2
Square root of 1/2; equivalently, 1 over the square root of 2, approximately 0.707.
Math.SQRT2
Square root of 2, approximately 1.414.

Methods

Note that the trigonometric functions (sin(), cos(), tan(), asin(), acos(), atan(), atan2()) expect or return angles in radians. To convert radians to degrees, divide by (Math.PI / 180), and multiply by this to convert the other way.

Note that many math functions have a precision that's implementation-dependent. This means that different browsers can give a different result, and even the same JS engine on a different OS or architecture can give different results.

Math.abs(x)
Returns the absolute value of a number.
Math.acos(x)
Returns the arccosine of a number.
Math.acosh(x)
Returns the hyperbolic arccosine of a number.
Math.asin(x)
Returns the arcsine of a number.
Math.asinh(x)
Returns the hyperbolic arcsine of a number.
Math.atan(x)
Returns the arctangent of a number.
Math.atanh(x)
Returns the hyperbolic arctangent of a number.
Math.atan2(y, x)
Returns the arctangent of the quotient of its arguments.
Math.cbrt(x)
Returns the cube root of a number.
Math.ceil(x)
Returns the smallest integer greater than or equal to a number.
Math.clz32(x)
Returns the number of leading zeroes of a 32-bit integer.
Math.cos(x)
Returns the cosine of a number.
Math.cosh(x)
Returns the hyperbolic cosine of a number.
Math.exp(x)
Returns Ex, where x is the argument, and E is Euler's constant (2.718…), the base of the natural logarithm.
Math.expm1(x)
Returns subtracting 1 from exp(x).
Math.floor(x)
Returns the largest integer less than or equal to a number.
Math.fround(x)
Returns the nearest single precision float representation of a number.
Math.hypot([x[, y[, …]]])
Returns the square root of the sum of squares of its arguments.
Math.imul(x, y)
Returns the result of a 32-bit integer multiplication.
Math.log(x)
Returns the natural logarithm (loge, also ln) of a number.
Math.log1p(x)
Returns the natural logarithm (loge, also ln) of 1 + x for a number x.
Math.log10(x)
Returns the base 10 logarithm of a number.
Math.log2(x)
Returns the base 2 logarithm of a number.
Math.max([x[, y[, …]]])
Returns the largest of zero or more numbers.
Math.min([x[, y[, …]]])
Returns the smallest of zero or more numbers.
Math.pow(x, y)
Returns base to the exponent power, that is, baseexponent.
Math.random()
Returns a pseudo-random number between 0 and 1.
Math.round(x)
Returns the value of a number rounded to the nearest integer.
Math.sign(x)
Returns the sign of the x, indicating whether x is positive, negative or zero.
Math.sin(x)
Returns the sine of a number.
Math.sinh(x)
Returns the hyperbolic sine of a number.
Math.sqrt(x)
Returns the positive square root of a number.
Math.tan(x)
Returns the tangent of a number.
Math.tanh(x)
Returns the hyperbolic tangent of a number.
Math.toSource()
Returns the string "Math".
Math.trunc(x)
Returns the integer part of the number x, removing any fractional digits.

Extending the Math object

As with most of the built-in objects in JavaScript, the Math object can be extended with custom properties and methods. To extend the Math object, you do not use prototype. Instead, you directly extend Math:

Math.propName = propValue;
Math.methodName = methodRef;

For instance, the following example adds a method to the Math object for calculating the greatest common divisor of a list of arguments.

/* Variadic function -- Returns the greatest common divisor of a list of arguments */
Math.gcd = function() {
    if (arguments.length == 2) {
        if (arguments[1] == 0)
            return arguments[0];
        else
            return Math.gcd(arguments[1], arguments[0] % arguments[1]);
    } else if (arguments.length > 2) {
        var result = Math.gcd(arguments[0], arguments[1]);
        for (var i = 2; i < arguments.length; i++)
            result = Math.gcd(result, arguments[i]);
        return result;
    }
};

Try it:

console.log(Math.gcd(20, 30, 15, 70, 40)); // `5`

Specifications

Browser compatibilityUpdate compatibility data on GitHub

Desktop
Chrome Edge Firefox Internet Explorer Opera Safari
E Yes Yes 1 Yes Yes Yes
LN2 Yes Yes 1 Yes Yes Yes
LN10 Yes Yes 1 Yes Yes Yes
LOG2E Yes Yes 1 Yes Yes Yes
LOG10E Yes Yes 1 Yes Yes Yes
PI Yes Yes 1 Yes Yes Yes
SQRT1_2 Yes Yes 1 Yes Yes Yes
SQRT2 Yes Yes 1 Yes Yes Yes
abs Yes Yes 1 Yes Yes Yes
acos Yes Yes 1 Yes Yes Yes
acosh 38 Yes 25 No 25 8
asin Yes Yes 1 Yes Yes Yes
asinh 38 Yes 25 No 25 8
atan Yes Yes 1 Yes Yes Yes
atan2 Yes Yes 1 Yes Yes Yes
atanh 38 Yes 25 No 25 8
cbrt 38 Yes 25 No 25 8
ceil Yes Yes 1 Yes Yes Yes
clz32 38 Yes 31 No 25 Yes
cos Yes Yes 1 Yes Yes Yes
cosh 38 Yes 25 No 25 8
exp Yes Yes 1 Yes Yes Yes
expm1 38 Yes 25 No 25 8
floor Yes Yes 1 Yes Yes Yes
fround 38 Yes 26 No 25 8
hypot 38 Yes 27 No 25 8
imul 28 Yes 20 No 16 7
log Yes Yes 1 Yes Yes Yes
log1p 38 Yes 25 No 25 8
log2 38 Yes 25 No 25 8
log10 38 Yes 25 No 25 8
max Yes Yes 1 Yes Yes Yes
min Yes Yes 1 Yes Yes Yes
pow Yes Yes 1 Yes Yes Yes
random Yes Yes 1 Yes Yes Yes
round Yes Yes 1 Yes Yes Yes
sign 38 Yes 25 No 25 9
sin Yes Yes 1 Yes Yes Yes
sinh 38 Yes 25 No 25 8
sqrt Yes Yes 1 Yes Yes Yes
tan Yes Yes 1 Yes Yes Yes
tanh 38 Yes 25 No 25 8
trunc 38 Yes 25 No 25 8
Mobile
Android webview Chrome for Android Edge Mobile Firefox for Android Opera for Android iOS Safari Samsung Internet
E Yes Yes Yes 4 Yes Yes Yes
LN2 Yes Yes Yes 4 Yes Yes Yes
LN10 Yes Yes Yes 4 Yes Yes Yes
LOG2E Yes Yes Yes 4 Yes Yes Yes
LOG10E Yes Yes Yes 4 Yes Yes Yes
PI Yes Yes Yes 4 Yes Yes Yes
SQRT1_2 Yes Yes Yes 4 Yes Yes Yes
SQRT2 Yes Yes Yes 4 Yes Yes Yes
abs Yes Yes Yes 4 Yes Yes Yes
acos Yes Yes Yes 4 Yes Yes Yes
acosh Yes Yes Yes 25 Yes 8 Yes
asin Yes Yes Yes 4 Yes Yes Yes
asinh Yes Yes Yes 25 Yes 8 Yes
atan Yes Yes Yes 4 Yes Yes Yes
atan2 Yes Yes Yes 4 Yes Yes Yes
atanh Yes Yes Yes 25 Yes 8 Yes
cbrt Yes Yes Yes 25 Yes 8 Yes
ceil Yes Yes Yes 4 Yes Yes Yes
clz32 Yes Yes Yes 31 Yes Yes Yes
cos Yes Yes Yes 4 Yes Yes Yes
cosh Yes Yes Yes 25 Yes 8 Yes
exp Yes Yes Yes 4 Yes Yes Yes
expm1 Yes Yes Yes 25 Yes 8 Yes
floor Yes Yes Yes 4 Yes Yes Yes
fround Yes Yes Yes 26 Yes 8 Yes
hypot Yes Yes Yes 27 Yes 8 Yes
imul Yes Yes Yes 20 Yes 7 Yes
log Yes Yes Yes 4 Yes Yes Yes
log1p Yes Yes Yes 25 Yes 8 Yes
log2 Yes Yes Yes 25 Yes 8 Yes
log10 Yes Yes Yes 25 Yes 8 Yes
max Yes Yes Yes 4 Yes Yes Yes
min Yes Yes Yes 4 Yes Yes Yes
pow Yes Yes Yes 4 Yes Yes Yes
random Yes Yes Yes 4 Yes Yes Yes
round Yes Yes Yes 4 Yes Yes Yes
sign Yes Yes Yes 25 Yes Yes Yes
sin Yes Yes Yes 4 Yes Yes Yes
sinh Yes Yes Yes 25 Yes 8 Yes
sqrt Yes Yes Yes 4 Yes Yes Yes
tan Yes Yes Yes 4 Yes Yes Yes
tanh Yes Yes Yes 25 Yes 8 Yes
trunc Yes Yes Yes 25 Yes 8 Yes
Server
Node.js
E Yes
LN2 Yes
LN10 Yes
LOG2E Yes
LOG10E Yes
PI Yes
SQRT1_2 Yes
SQRT2 Yes
abs Yes
acos Yes
acosh 0.12
asin Yes
asinh 0.12
atan Yes
atan2 Yes
atanh 0.12
cbrt 0.12
ceil Yes
clz32 0.12
cos Yes
cosh 0.12
exp Yes
expm1 0.12
floor Yes
fround 0.12
hypot 0.12
imul 0.12
log Yes
log1p 0.12
log2 0.12
log10 0.12
max Yes
min Yes
pow Yes
random Yes
round Yes
sign 0.12
sin Yes
sinh 0.12
sqrt Yes
tan Yes
tanh 0.12
trunc 0.12

See also

© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math