aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/javascript/reference/global_objects/number/max_safe_integer/index.html
blob: 6ab5f0cd74ab2f459e5da9749a6740cabfd7a4c8 (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
---
title: Number.MAX_SAFE_INTEGER
slug: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
tags:
  - ECMAScript 2015
  - JavaScript
  - Number
  - Número
  - Property
  - Propriedade
translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
---
<div>{{JSRef}}</div>

<p>A constante <strong><code>Number.MAX_SAFE_INTEGER</code></strong> representa o maior inteiro seguro no JavaScript (<code>2<sup>53</sup> - 1</code>).</p>

<p>Para inteiros maiores, considere usar {{jsxref("BigInt")}}.</p>

<div>{{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}}</div>

<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div>

<div>{{js_property_attributes(0, 0, 0)}}</div>

<h2 id="Descrição">Descrição</h2>

<p>A constante <code>MAX_SAFE_INTEGER</code> tem o valor de <code>9007199254740991</code> (9,007,199,254,740,991 ou ~9 quadrilhões). A razão por trás deste número é que o JavaScript usa o <a href="http://en.wikipedia.org/wiki/Double_precision_floating-point_format">formato de número de ponto-flutuante de precisão-dupla</a> como especificado na <a href="http://en.wikipedia.org/wiki/IEEE_floating_point">IEEE 754</a> e pode seguramente representar número entre <code>-(2<sup>53</sup> - 1)</code> e <code>2<sup>53</sup> - 1</code>.</p>

<p>Seguro neste contexto se refere a habilidade de representar inteiros exatamente e corretamente compará-los. Por exemplo, <code>Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2</code> será avaliado para verdadeiro, que é matematicamente incorreto. Veja {{jsxref("Number.isSafeInteger()")}} para mais informação.</p>

<p>Este campo não existe em navegadores antigos. Usando ele sem checar sua existência, como <code>Math.max(Number.MAX_SAFE_INTEGER, 2)</code>, irá gerar resultados indesejados como NaN.</p>

<p>Por <code>MAX_SAFE_INTEGER</code> ser uma propriedade estática de {{jsxref("Number")}}, você sempre deve usar como <code>Number.MAX_SAFE_INTEGER</code>, ao invés de uma propriedade do objeto {{jsxref("Number")}} que você criou.</p>

<h2 id="Polyfill">Polyfill</h2>

<pre class="brush: js notranslate">if (!Number.MAX_SAFE_INTEGER) {
    Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
}
</pre>

<h2 id="Exemplos">Exemplos</h2>

<h3 id="Retorno_do_valor_de_MAX_SAFE_INTEGER">Retorno do valor de MAX_SAFE_INTEGER</h3>

<pre class="brush: js notranslate">Number.MAX_SAFE_INTEGER; // 9007199254740991
</pre>

<h3 id="Números_maiores_que_o_inteiro_seguro">Números maiores que o inteiro seguro</h3>

<p>Isso retorna 2 por quê em pontos flutuantes, o valor é na verdade o final decimal "1" exceto em casos subnormais de precisão como zero.</p>

<pre class="brush: js notranslate">Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
</pre>

<h2 id="Especificações">Especificações</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Especificação</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Compatibilidade com navegadores</h2>



<p>{{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}}</p>

<h2 id="Veja_também">Veja também</h2>

<ul>
 <li>{{jsxref("Number.MIN_SAFE_INTEGER")}}</li>
 <li>{{jsxref("Number.isSafeInteger()")}}</li>
 <li>{{jsxref("BigInt")}}</li>
</ul>