aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/bigint/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/bigint/index.html')
-rw-r--r--files/uk/web/javascript/reference/global_objects/bigint/index.html296
1 files changed, 0 insertions, 296 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/bigint/index.html b/files/uk/web/javascript/reference/global_objects/bigint/index.html
deleted file mode 100644
index 63d1f8d4fc..0000000000
--- a/files/uk/web/javascript/reference/global_objects/bigint/index.html
+++ /dev/null
@@ -1,296 +0,0 @@
----
-title: BigInt
-slug: Web/JavaScript/Reference/Global_Objects/BigInt
-tags:
- - BigInt
- - JavaScript
- - Довідка
- - Клас
-translation_of: Web/JavaScript/Reference/Global_Objects/BigInt
----
-<div>{{JSRef}}</div>
-
-<p><span class="seoSummary"><strong><code>BigInt</code></strong> є вбудованим об'єктом, який надає можливість відображати неушкодженими числа, більші за 2<sup>53</sup> - 1</span>, тобто, за найбільше число, яке може надійно відобразити JavaScript за допомогою {{Glossary("Primitive", "примітиву")}} <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Число"><code>Number</code></a> та яке передається константою <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER"><code>Number.MAX_SAFE_INTEGER</code></a>. <strong><code>BigInt</code></strong> може використовуватись для довільно великих цілих чисел.</p>
-
-<dl>
-</dl>
-
-<h2 id="Опис">Опис</h2>
-
-<p><code>BigInt</code> утворюється додаванням <code>n</code> у кінець цілочисельного літералу — <code>10n</code> — або викликом функції <code>BigInt()</code>.</p>
-
-<pre class="brush: js notranslate">const theBiggestInt = 9007199254740991n
-
-const alsoHuge = BigInt(9007199254740991)
-// ↪ 9007199254740991n
-
-const hugeString = BigInt("9007199254740991")
-// ↪ 9007199254740991n
-
-const hugeHex = BigInt("0x1fffffffffffff")
-// ↪ 9007199254740991n
-
-const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111111")
-// ↪ 9007199254740991n
-</pre>
-
-<p>Тип <code>BigInt</code> певними рисами схожий на <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Число"><code>Number</code></a>, але також відрізняється у кількох ключових моментах — він не може використовуватись з методами вбудованого об'єкта <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Math"><code>Math</code></a> та не може змішуватись з екземплярами <code>Number</code> у операціях; вони мають бути приведені до одного типу. Однак, будьте обережні, перетворюючи значення туди й назад, бо <code>BigInt</code> може втратити точність при перетворенні на <code>Number</code>.</p>
-
-<h3 id="Інформація_про_тип">Інформація про тип</h3>
-
-<p>При перевірці на <code>typeof</code>, <code>BigInt</code> видасть "bigint":</p>
-
-<pre class="brush: js notranslate">typeof 1n === 'bigint' // true
-typeof BigInt('1') === 'bigint' // true
-</pre>
-
-<p>При загортанні у <code>Object</code>, <code>BigInt</code> вважатиметься звичайним типом "object":</p>
-
-<pre class="brush: js notranslate">typeof Object(1n) === 'object' // true
-</pre>
-
-<h3 id="Оператори">Оператори</h3>
-
-<p>Наступні оператори можна використовувати з <code>BigInt</code> (або з загорнутими у об'єкт <code>BigInt</code>): <code>+</code>, <code>*</code>, <code>-</code>, <code>**</code>, <code>%</code>.</p>
-
-<p><a href="/uk/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators">Бітові оператори</a> також підтримуються, окрім <code>&gt;&gt;&gt;</code> (правий зсув із заповненням нулями), оскільки числа BigInt мають знак.</p>
-
-<p>Також не підтримується унарний оператор (<code>+</code>), <a href="https://github.com/tc39/proposal-bigint/blob/master/ADVANCED.md#dont-break-asmjs">щоб не ламати asm.js</a>.</p>
-
-<pre class="brush: js notranslate">const previousMaxSafe = BigInt(Number.MAX_SAFE_INTEGER)
-// ↪ 9007199254740991n
-
-const maxPlusOne = previousMaxSafe + 1n
-// ↪ 9007199254740992n
-
-const theFuture = previousMaxSafe + 2n
-// ↪ 9007199254740993n, тепер це працює!
-
-const multi = previousMaxSafe * 2n
-// ↪ 18014398509481982n
-
-const subtr = multi – 10n
-// ↪ 18014398509481972n
-
-const mod = multi % 10n
-// ↪ 2n
-
-const bigN = 2n ** 54n
-// ↪ 18014398509481984n
-
-bigN * -1n
-// ↪ –18014398509481984n
-</pre>
-
-<p>Оператор <code>/</code> також працює, як і очікується, з повними числами.</p>
-
-<p>Однак, оскільки це <code>BigInt</code>, а не <code>BigDecimal</code>, ця операція округлить результат в бік <code>0</code> (іншими словами, вона не поверне десяткових знаків).</p>
-
-<div class="blockIndicator warning">
-<p>Дробова частина результату операції буде обрізана при використанні з <code>BigInt</code>.</p>
-</div>
-
-<pre class="brush: js notranslate">const expected = 4n / 2n
-// ↪ 2n
-
-const rounded = 5n / 2n
-// ↪ 2n, а не 2.5n
-
-</pre>
-
-<h3 id="Порівняння">Порівняння</h3>
-
-<p><code>BigInt</code> не є строго рівним <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Число"><code>Number</code></a>, але <em>є</em> нестрого рівним:</p>
-
-<pre class="brush: js notranslate">0n === 0
-// ↪ false
-
-0n == 0
-// ↪ true</pre>
-
-<p><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Число"><code>Number</code></a> та <code>BigInt</code> можна порівнювати звичайним чином:</p>
-
-<pre class="brush: js notranslate">1n &lt; 2
-// ↪ true
-
-2n &gt; 1
-// ↪ true
-
-2 &gt; 2
-// ↪ false
-
-2n &gt; 2
-// ↪ false
-
-2n &gt;= 2
-// ↪ true</pre>
-
-<p>Їх можна змішувати у масивах та сортувати:</p>
-
-<pre class="brush: js notranslate">const mixed = [4n, 6, -12n, 10, 4, 0, 0n]
-// ↪ [4n, 6, -12n, 10, 4, 0, 0n]
-
-mixed.sort() // звичайна поведінка при сортуванні
-// ↪ [ -12n, 0, 0n, 10, 4n, 4, 6 ]
-
-mixed.sort((a, b) =&gt; a - b)
-// не спрацює, оскільки віднімання не працює при змішуванні типів
-// TypeError: can't convert BigInt to number
-
-// сортування з потрібним порівнянням чисел
-mixed.sort((a, b) =&gt; (a &lt; b) ? -1 : ((a &gt; b) ? 1 : 0)
-// ↪ [ -12n, 0, 0n, 4n, 4, 6, 10 ]
-</pre>
-
-<p>Зауважте, що порівняння чисел <code>BigInt</code>, загорнутих у об'єкт, працюють так само, як з іншими об'єктами, вони рівні тільки при порівнянні одного й того ж самого об'єкта:</p>
-
-<pre class="brush: js notranslate">0n === Object(0n) // false
-Object(0n) === Object(0n) // false
-
-const o = Object(0n)
-o === o // true
-</pre>
-
-<h3 id="Умовні_конструкції">Умовні конструкції</h3>
-
-<p><code>BigInt</code> поводиться так само, як і <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Число"><code>Number</code></a>, у тих випадках, де:</p>
-
-<ul>
- <li>перетворюється на <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Boolean"><code>Boolean</code></a>: функцією <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Boolean"><code>Boolean</code></a>;</li>
- <li>використовується з <a href="/uk/docs/Web/JavaScript/Reference/Operators/Logical_Operators">логічними операторами</a> <code>||</code>, <code>&amp;&amp;</code> та <code>!</code>; або</li>
- <li>всередині умовної перевірки, наприклад, в інструкції <a href="/uk/docs/Web/JavaScript/Reference/Statements/if...else"><code>if</code></a>.</li>
-</ul>
-
-<pre class="brush: js notranslate">if (0n) {
- console.log('Привіт з if!')
-} else {
- console.log('Привіт з else!')
-}
-
-// ↪ "Привіт з else!"
-
-0n || 12n
-// ↪ 12n
-
-0n &amp;&amp; 12n
-// ↪ 0n
-
-Boolean(0n)
-// ↪ false
-
-Boolean(12n)
-// ↪ true
-
-!12n
-// ↪ false
-
-!0n
-// ↪ true
-</pre>
-
-<h2 id="Конструктор">Конструктор</h2>
-
-<dl>
- <dt><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/BigInt/BigInt"><code>BigInt()</code></a></dt>
- <dd>Створює нове значення <code>bigint</code>.</dd>
-</dl>
-
-<h2 id="Статичні_методи">Статичні методи</h2>
-
-<dl>
- <dt><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/BigInt/asIntN"><code>BigInt.asIntN()</code></a></dt>
- <dd>Обертає значення <code>BigInt</code> до цілого числа зі знаком у діапазоні між <code>-2<var><sup>width</sup></var><sup>-1</sup></code> та <code>2<var><sup>width</sup></var><sup>-1</sup> - 1</code>.</dd>
- <dt><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/BigInt/asUintN"><code>BigInt.asUintN()</code></a></dt>
- <dd>Обертає значення <code>BigInt</code> до беззнакового цілого числа у діапазоні між <code>0</code> та <code>2<var><sup>width</sup></var> - 1</code>.</dd>
-</dl>
-
-<h2 id="Методи_екземплярів">Методи екземплярів</h2>
-
-<dl>
- <dt><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/BigInt/toLocaleString"><code>BigInt.prototype.toLocaleString()</code></a></dt>
- <dd>Повертає рядок, який відображає число у відповідності до налаштувань мови. Заміщує метод <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString"><code>Object.prototype.toLocaleString()</code></a>.</dd>
- <dt><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/BigInt/toString"><code>BigInt.prototype.toString()</code></a></dt>
- <dd>Вертає рядкове представлення вказаного об'єкта з вказаною основою системи числення. Заміщує метод <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/toString"><code>Object.prototype.toString()</code></a>.</dd>
- <dt><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/BigInt/valueOf"><code>BigInt.prototype.valueOf()</code></a></dt>
- <dd>Вертає загорнуте примітивне значення вказаного об'єкта. Заміщує метод <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf"><code>Object.prototype.valueOf()</code></a>.</dd>
-</dl>
-
-<h2 id="Рекомендації_щодо_використання">Рекомендації щодо використання</h2>
-
-<h3 id="Перетворення_типів">Перетворення типів</h3>
-
-<p>Оскільки перетворення між <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Число"><code>Number</code></a> та <code>BigInt</code> можуть призвести до втрати точності, рекомендується використовувати лише <code>BigInt</code>, коли очікуються значення, більші за 2<sup>53</sup>, і не переключатись між двома типами.</p>
-
-<h3 id="Криптографія">Криптографія</h3>
-
-<p>Операції, що підтримуються на об'єктах <code>BigInt</code>, не є операціями сталого часу. Таким чином, об'єкти <code>BigInt</code> <a href="https://www.chosenplaintext.ca/articles/beginners-guide-constant-time-cryptography.html">непридатні для використання у криптографії</a>.</p>
-
-<h3 id="Використання_у_JSON">Використання у JSON</h3>
-
-<p>Використання <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify"><code>JSON.stringify()</code></a> з будь-яким значенням <code>BigInt</code> спричинить <code>TypeError</code>, оскільки значення <code>BigInt</code> не серіалізуються у JSON за замовчуванням. Однак, ви можете за необхідності реалізувати свій власний метод <code>toJSON</code>:</p>
-
-<pre class="brush: js notranslate">BigInt.prototype.toJSON = function() { return this.toString() }</pre>
-
-<p>Тепер <code>JSON.stringify</code>, замість викидання винятку, повертає ось такий рядок:</p>
-
-<pre class="brush: js notranslate">JSON.stringify(BigInt(1))
-// '"1"'</pre>
-
-<h2 id="Приклади">Приклади</h2>
-
-<h3 id="Обчислення_простих_чисел">Обчислення простих чисел</h3>
-
-<pre class="brush: js notranslate">// Повертає true, якщо передане значення BigInt є простим числом
-function isPrime(p) {
- for (let i = 2n; i * i &lt;= p; i++) {
- if (p % i === 0n) return false;
- }
- return true
-}
-
-// Приймає BigInt в якості аргументу, повертає n-не просте число як BigInt
-function nthPrime(nth) {
- let maybePrime = 2n
- let prime = 0n
-
- while (nth &gt;= 0n) {
- if (isPrime(maybePrime)) {
- nth--
- prime = maybePrime
- }
- maybePrime++
- }
-
- return prime
-}
-
-nthPrime(20n)
-// ↪ 73n</pre>
-
-<h2 id="Специфікації">Специфікації</h2>
-
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">Специфікація</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>{{SpecName("ESDraft", "#sec-bigint-objects", "<code>BigInt</code> objects")}}</td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>
-
-<div class="hidden">The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</div>
-
-<p>{{Compat("javascript.builtins.BigInt")}}</p>
-
-<h2 id="Див._також">Див. також</h2>
-
-<ul>
- <li><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Число"><code>Number</code></a></li>
- <li><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER"><code>Number.MAX_SAFE_INTEGER</code></a></li>
-</ul>