Math

Math es un objeto incorporado que tiene propiedades y métodos para constantes y funciones matemáticas. No es un objeto de función.

Math funciona con el tipo Number. No funciona con BigInt.

Descripción

A diferencia de los demás objetos globales, el objeto Math no se puede editar. Todas las propiedades y métodos de Math son estáticos. Usted se puede referir a la constante pi como Math.PI y puede llamar a la función seno como Math.sin(x), donde x es el argumento del método. Las constantes se definen con la precisión completa de los números reales en JavaScript.

Propiedades

Math.E
Constante de Euler, la base de los logaritmos naturales, aproximadamente 2.718.
Math.LN2
Logaritmo natural de 2, aproximadamente 0.693.
Math.LN10
Logaritmo natural de 10, aproximadamente 2.303.
Math.LOG2E
Logaritmo de E con base 2, aproximadamente 1.443.
Math.LOG10E
Logaritmo de E con base 10, aproximadamente 0.434.
Math.PI
Ratio de la circunferencia de un circulo respecto a su diámetro, aproximadamente 3.14159.
Math.SQRT1_2
Raíz cuadrada de 1/2; Equivalentemente, 1 sobre la raíz cuadrada de 2, aproximadamente 0.707.
Math.SQRT2
Raíz cuadrada de 2, aproximadamente 1.414.

Métodos

Tenga en cuenta que las funciones trigonométricas (sin(), cos(), tan(), asin(), acos(), atan(), atan2()) devuelven ángulos en radianes. Para convertir radianes a grados, divida por (Math.PI / 180), y multiplique por esto para convertir a la inversa.

Tenga en cuenta que muchas de las funciones matemáticas tienen una precisión que es dependiente de la implementación. Esto significa que los diferentes navegadores pueden dar un resultado diferente, e incluso el mismo motor de JS en un sistema operativo o arquitectura diferente puede dar resultados diferentes.

Math.abs(x)
Devuelve el valor absoluto de un número.
Math.acos(x)
Devuelve el arco coseno de un número.
Math.acosh(x)
Devuelve el arco coseno hiperbólico de un número.
Math.asin(x)
Devuelve el arco seno de un número.
Math.asinh(x)
Devuelve el arco seno hiperbólico de un número.
Math.atan(x)
Devuelve el arco tangente de un número.
Math.atanh(x)
Devuelve el arco tangente hiperbólico de un número.
Math.atan2(y, x)
Devuelve el arco tangente del cuociente de sus argumentos.
Math.cbrt(x)
Devuelve la raíz cúbica de un número.
Math.ceil(x)
Devuelve el entero más pequeño mayor o igual que un número.
Math.clz32(x)
Devuelve el número de ceros iniciales de un entero de 32 bits.
Math.cos(x)
Devuelve el coseno de un número.
Math.cosh(x)
Devuelve el coseno hiperbólico de un número.
Math.exp(x)
Devuelve Ex, donde x es el argumento, y E es la constante de Euler (2.718...), la base de los logaritmos naturales.
Math.expm1(x)
Devuelve ex - 1.
Math.floor(x)
Devuelve el mayor entero menor que o igual a un número.
Math.fround(x)
Devuelve la representación flotante de precisión simple más cercana de un número.
Math.hypot([x[, y[, …]]])
Devuelve la raíz cuadrada de la suma de los cuadrados de sus argumentos.
Math.imul(x, y)
Devuelve el resultado de una multiplicación de enteros de 32 bits.
Math.log(x)
Devuelve el logaritmo natural (log, también ln) de un número.
Math.log1p(x)
Devuelve el logaritmo natural de x + 1 (loge, también ln) de un número.
Math.log10(x)
Devuelve el logaritmo en base 10 de x.
Math.log2(x)
Devuelve el logaritmo en base 2 de x.
Math.max([x[, y[, …]]])
Devuelve el mayor de cero o más números.
Math.min([x[, y[, …]]])
Devuelve el más pequeño de cero o más números.
Math.pow(x, y)
Las devoluciones de base a la potencia de exponente, que es, baseexponent.
Math.random()
Devuelve un número pseudo-aleatorio entre 0 y 1.
Math.round(x)
Devuelve el valor de un número redondeado al número entero más cercano.
Math.sign(x)
Devuelve el signo de la x, que indica si x es positivo, negativo o cero.
Math.sin(x)
Devuelve el seno de un número.
Math.sinh(x)
Devuelve el seno hiperbólico de un número.
Math.sqrt(x)
Devuelve la raíz cuadrada positiva de un número.
Math.tan(x)
Devuelve la tangente de un número.
Math.tanh(x)
Devuelve la tangente hiperbólica de un número.
Math.toSource()  
Devuelve la cadena "Math".
Math.trunc(x)
Devuelve la parte entera del número x, la eliminación de los dígitos fraccionarios.

Extendiendo el objeto Math

Como muchos de los objetos incluidos en JavaScript, el objeto Math puede ser extendido con propiedades y métodos personalizados. Para extender el objeto Math no se debe usar 'prototype'. Es posible extender directamente Math:

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

Como demostración, el siguiente ejemplo agrega un método al objeto Math para calcular el máximo común divisor de una lista de argumentos.

/* Función variádica -- Retorna el máximo común divisor de una lista de argumentos */
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;
    }
};

Pruébalo:

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

Especificaciones

Especificación Estado Comentario
ECMAScript 1st Edition (ECMA-262) Standard Definición Inicial. Implementado en JavaScript 1.1.
ECMAScript 5.1 (ECMA-262)
La definición de 'Math' en esta especificación.
Standard
ECMAScript 2015 (6th Edition, ECMA-262)
La definición de 'Math' en esta especificación.
Standard Nuevos métodos log10(), log2(), log1p(), expm1(), cosh(), sinh(), tanh(), acosh(), asinh(), atanh(), hypot(), trunc(), sign(), imul(), fround(), cbrt() y clz32() añadidos.
ECMAScript (ECMA-262)
La definición de 'Math' en esta especificación.
Living Standard

Compatibilidad con navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome para AndroidFirefox para AndroidOpera para AndroidSafari en iOSSamsung InternetNode.js
EChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
LN2Chrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
LN10Chrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
LOG2EChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
LOG10EChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
PIChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
SQRT1_2Chrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
SQRT2Chrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
absChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
acosChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
acoshChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
asinChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
asinhChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
atanChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
atan2Chrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 4Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
atanhChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
cbrtChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
ceilChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
clz32Chrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 31IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 7WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 31Opera Android Soporte completo 25Safari iOS Soporte completo 7Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
cosChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
coshChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
expChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
expm1Chrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
floorChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
froundChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 26IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 26Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
hypotChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 27IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 27Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
imulChrome Soporte completo 28Edge Soporte completo 12Firefox Soporte completo 20IE Sin soporte NoOpera Soporte completo 16Safari Soporte completo 7WebView Android Soporte completo ≤37Chrome Android Soporte completo 28Firefox Android Soporte completo 20Opera Android Soporte completo 15Safari iOS Soporte completo 7Samsung Internet Android Soporte completo 1.5nodejs Soporte completo 0.12
logChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
log1pChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
log2Chrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
log10Chrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
maxChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
minChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
powChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
randomChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
roundChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
signChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 9WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 9Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
sinChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
sinhChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
sqrtChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
tanChrome Soporte completo 1Edge Soporte completo 12Firefox Soporte completo 1IE Soporte completo 3Opera Soporte completo 3Safari Soporte completo 1WebView Android Soporte completo 1Chrome Android Soporte completo 18Firefox Android Soporte completo 4Opera Android Soporte completo 10.1Safari iOS Soporte completo 1Samsung Internet Android Soporte completo 1.0nodejs Soporte completo 0.1.100
tanhChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12
truncChrome Soporte completo 38Edge Soporte completo 12Firefox Soporte completo 25IE Sin soporte NoOpera Soporte completo 25Safari Soporte completo 8WebView Android Soporte completo 38Chrome Android Soporte completo 38Firefox Android Soporte completo 25Opera Android Soporte completo 25Safari iOS Soporte completo 8Samsung Internet Android Soporte completo 3.0nodejs Soporte completo 0.12

Leyenda

Soporte completo  
Soporte completo
Sin soporte  
Sin soporte

Ver también