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.
To extend the Math object, you do not use 'prototype'. Instead you directly extend Math:
Math.propName=propValue;
Math.methodName=methodfRef;
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 integral part of the number x, removing any fractional digits.
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.1. |
ECMAScript 5.1 (ECMA-262) The definition of 'Math' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Math' in that specification. |
Standard | New methods log10() , log2() , log1p() , expm1() , cosh() , sinh() , tanh() , acosh() , asinh() , atanh() , hypot() , trunc() , sign() , imul() , fround() , cbrt() and clz32() added. |
ECMAScript Latest Draft (ECMA-262) The definition of 'Math' in that specification. |
Draft |
Browser compatibility
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Feature | Chrome | Firefox | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
E | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
LN10 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
LN2 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
LOG10E | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
LOG2E | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
PI | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
SQRT1_2 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
SQRT2 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
abs | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
acos | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
acosh | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
asin | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
asinh | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
atan | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
atan2 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
atanh | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
cbrt | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
ceil | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
clz32 | 38 | 31 | (Yes) | (No) | 25 | (Yes) |
cos | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
cosh | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
exp | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
expm1 | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
floor | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
fround | 38 | 26 | (Yes) | (No) | 25 | 7.1 |
hypot | 38 | 27 | (Yes) | (No) | 25 | 7.1 |
imul | 28 | 20 | (Yes) | (No) | 16 | 7 |
log | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
log10 | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
log1p | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
log2 | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
max | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
min | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
pow | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
random | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
round | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
sign | 38 | 25 | (Yes) | (No) | 25 | 9 |
sin | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
sinh | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
sqrt | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
tan | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
tanh | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
trunc | 38 | 25 | (Yes) | (No) | 25 | 7.1 |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
E | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
LN10 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
LN2 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
LOG10E | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
LOG2E | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
PI | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
SQRT1_2 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
SQRT2 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
abs | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
acos | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
acosh | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
asin | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
asinh | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
atan | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
atan2 | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
atanh | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
cbrt | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
ceil | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
clz32 | (Yes) | (Yes) | (Yes) | 31 | (No) | (Yes) | (Yes) |
cos | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
cosh | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
exp | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
expm1 | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
floor | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
fround | (Yes) | (Yes) | (Yes) | 26 | (No) | (Yes) | 8 |
hypot | (Yes) | (Yes) | (Yes) | 27 | (No) | (Yes) | 8 |
imul | (Yes) | (Yes) | (Yes) | 20 | (No) | (Yes) | 7 |
log | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
log10 | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
log1p | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
log2 | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
max | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
min | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
pow | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
random | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
round | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
sign | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | (Yes) |
sin | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
sinh | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
sqrt | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
tan | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
tanh | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |
trunc | (Yes) | (Yes) | (Yes) | 25 | (No) | (Yes) | 8 |