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
|
---
title: Number.isSafeInteger()
slug: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
tags:
- ECMAScript6
- JavaScript
- Number
- metodo
translation_of: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
original_slug: Web/JavaScript/Referencia/Objetos_globales/Number/isSafeInteger
---
<div>{{JSRef}}</div>
<p>El método <strong><code>Number.isSafeInteger()</code></strong> determina si el valor provisto es un número que es un entero seguro.</p>
<div>{{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}}</div>
<p>Un entero seguro es un entero que</p>
<ul>
<li>puede ser exactamente representado como un número IEEE-754 de doble presición, y</li>
<li>su representación IEEE-754 no puede ser el resultado de redondear cualquier otro entero para adaptarse a la representación de IEEE-754.</li>
</ul>
<p>Por ejemplo, <code>2<sup>53</sup> - 1</code> es un entero seguro: puede ser exactamente representado y ningún otro entero puede ser redondeado a él bajo cualquier modo de redondeo de IEEE-754. En contraste, <code>2<sup>53</sup></code> <em>no</em> es un entero seguro, puede ser exactamente representado en IEEE-754, pero el entero <code>2<sup>53</sup> + 1</code> no puede ser directamente representado en IEEE-754 pero en su lugar, redondea a <code>2<sup>53</sup></code> bajo los modos de redondeo <em>redondeo-al-más-cercano</em> y <em>redondeo-a-cero</em>. Los enteros seguros consisten en todos los enteros desde <code>-(2<sup>53</sup> - 1)</code> inclusivo, hasta <code>2<sup>53</sup> - 1</code> inclusivo (± <code>9007199254740991</code> o ± 9,007,199,254,740,991). </p>
<p>Manejar valores más grandes o más pequeños que ~9 cuatrillones con presición completa requiere usar una <a href="https://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic">biblioteca de artimética de presición arbitraria</a>. Ver <a href="http://floating-point-gui.de/">Lo que todo programador necesita saber sobre aritmética de punto flotante</a> para más información sobre representaciones de punto flotante de los números.</p>
<h2 id="Sintaxis">Sintaxis</h2>
<pre class="syntaxbox"><code>Number.isSafeInteger(<em>valorDePrueba</em>)</code>
</pre>
<h3 id="Parámetros">Parámetros</h3>
<dl>
<dt><code><em>valorDePrueba</em></code></dt>
<dd>El valor a probar si es un entero seguro.</dd>
</dl>
<h3 id="Valor_de_retorno">Valor de retorno</h3>
<p>Un {{jsxref("Boolean")}} que indica si el valor dado es un número que es entero seguro.</p>
<h2 id="Ejemplos">Ejemplos</h2>
<pre class="brush: js">Number.isSafeInteger(3); // true
Number.isSafeInteger(Math.pow(2, 53)); // false
Number.isSafeInteger(Math.pow(2, 53) - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger('3'); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
</pre>
<h2 id="Polyfill">Polyfill</h2>
<pre class="brush: js">Number.isSafeInteger = Number.isSafeInteger || function (value) {
return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
};
</pre>
<h2 id="Especificaciones">Especificaciones</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Especificación</th>
<th scope="col">Estatus</th>
<th scope="col">Comentario</th>
</tr>
<tr>
<td>{{SpecName('ES2015', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}</td>
<td>{{Spec2('ES2015')}}</td>
<td>Definición inicial.</td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2>
<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
<p>{{Compat("javascript.builtins.Number.isSafeInteger")}}</p>
<h2 id="Ver_también">Ver también</h2>
<ul>
<li>El objeto {{jsxref("Number")}} al que pertenece.</li>
<li>{{jsxref("Number.MIN_SAFE_INTEGER")}}</li>
<li>{{jsxref("Number.MAX_SAFE_INTEGER")}}</li>
</ul>
|