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` (en-US).

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

**Nota:** 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.

**Nota:** 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)` (en-US)

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)` (en-US)

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)` (en-US)

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)` (en-US)

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)` (en-US)

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)` (en-US)

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() 
Non-standard

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`:


```js
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.


```js
/\* 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:


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

Especificaciones
----------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-math-object |

Compatibilidad con navegadores
------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Ver también
-----------

* `Number`