aboutsummaryrefslogtreecommitdiff
path: root/files/es/web/javascript/referencia/objetos_globales/math/index.html
blob: bdf0d21e74d7a5888c1563e5cd89fadf22b4b619 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
---
title: Math
slug: Web/JavaScript/Referencia/Objetos_globales/Math
tags:
  - JavaScript
  - Math
  - Referencia
translation_of: Web/JavaScript/Reference/Global_Objects/Math
---
<div>{{JSRef}}</div>

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

<p><strong><code>Math</code></strong> funciona con el tipo {{jsxref("Number")}}. No funciona con {{jsxref("BigInt")}}.</p>

<h2 id="Descripción">Descripción</h2>

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

<h2 id="Propiedades">Propiedades</h2>

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

<h2 id="Métodos">Métodos</h2>

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

<div class="note">
<p>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.</p>
</div>

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

<h2 id="Extendiendo_el_objeto_Math">Extendiendo el objeto <code>Math</code></h2>

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

<pre class="brush: js notranslate">Math.propName = propValue;
Math.methodName = methodRef;</pre>

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

<pre class="brush: js notranslate">/* 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 &gt; 2) {
        var result = Math.gcd(arguments[0], arguments[1]);
        for (var i = 2; i &lt; arguments.length; i++)
            result = Math.gcd(result, arguments[i]);
        return result;
    }
};</pre>

<p>Pruébalo:</p>

<pre class="brush: js notranslate">console.log(Math.gcd(20, 30, 15, 70, 40)); // `5`</pre>

<h2 id="Especificaciones">Especificaciones</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Especificación</th>
   <th scope="col">Estado</th>
   <th scope="col">Comentario</th>
  </tr>
  <tr>
   <td>{{SpecName('ES1')}}</td>
   <td>{{Spec2('ES1')}}</td>
   <td>Definición Inicial. Implementado en JavaScript 1.1.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-15.8', 'Math')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-math-object', 'Math')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td>Nuevos métodos {{jsxref("Math.log10()", "log10()")}}, {{jsxref("Math.log2()", "log2()")}}, {{jsxref("Math.log1p()", "log1p()")}}, {{jsxref("Math.expm1()", "expm1()")}}, {{jsxref("Math.cosh()", "cosh()")}}, {{jsxref("Math.sinh()", "sinh()")}}, {{jsxref("Math.tanh()", "tanh()")}}, {{jsxref("Math.acosh()", "acosh()")}}, {{jsxref("Math.asinh()", "asinh()")}}, {{jsxref("Math.atanh()", "atanh()")}}, {{jsxref("Math.hypot()", "hypot()")}}, {{jsxref("Math.trunc()", "trunc()")}}, {{jsxref("Math.sign()", "sign()")}}, {{jsxref("Math.imul()", "imul()")}}, {{jsxref("Math.fround()", "fround()")}}, {{jsxref("Math.cbrt()", "cbrt()")}} y {{jsxref("Math.clz32()", "clz32()")}} añadidos.</td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-math-object', 'Math')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td></td>
  </tr>
 </tbody>
</table>

<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2>

<div>{{Compat("javascript.builtins.Math")}}</div>

<h2 id="Ver_también">Ver también</h2>

<ul>
 <li>{{jsxref("Number")}}</li>
</ul>