From 7bf737a2d9b561ff8314661febbab26a2fdd42ee Mon Sep 17 00:00:00 2001 From: Matvey Romanov <38384967+ra1nbow1@users.noreply.github.com> Date: Sun, 13 Oct 2024 12:20:59 +0300 Subject: [PATCH 1/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D1=82=20=D0=B4=D0=BE=D0=BA=D1=83=20=D0=BF=D1=80=D0=BE=20?= =?UTF-8?q?`BigInt`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/bigint/index.md | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/js/bigint/index.md b/js/bigint/index.md index 3b97907f89..63273e86ff 100644 --- a/js/bigint/index.md +++ b/js/bigint/index.md @@ -1,22 +1,22 @@ + --- title: "Большое целое" description: "В математике числа бесконечны, а в программировании — нет. Если число не влезает в стандартный `number`, то есть его старший брат." authors: - - doka-dog + - ra1nbow1 related: - js/number - js/typecasting - tools/json tags: - doka - - placeholder --- ## Кратко -Тип большого целого `BigInt` — примитивный тип, который представляет целые числа больше 253-1. Эти числа уже не помещаются в стандартный [примитив «число»](/js/number/). +Тип большого целого `BigInt` — примитивный тип, который представляет целые числа больше 253-1. Эти числа уже не помещаются в стандартный [примитив «число»](/js/number/). -Этот тип может использоваться для работы с произвольно большими целыми числами. +Этот тип может использоваться для работы с произвольно большими целыми числами, такими как идентификаторы, криптографические ключи или другие данные, где требуется высокая точность. ## Как пишется @@ -34,7 +34,7 @@ const biggy = 9997000254740991n const alsoBig = BigInt(9997000254999999) ``` -Для `BigInt` определены операции сложения `+`, вычитания `-`, умножения `*`, взятия остатка от деления `%`, возведение в степень `**`. +Для `BigInt` определены операции сложения `+`, вычитания `-`, умножения `*`, взятия остатка от деления `%`, возведения в степень `**`. Операция деления `/` также работает, но дробная часть будет отброшена: @@ -51,3 +51,35 @@ console.log(seven / five) ☝️ `BigInt` не сериализуется в [JSON](/tools/json/). Это усложняет использование этого типа данных в задачах взаимодействия с сервером. + +## Преобразование типов + +`BigInt` не может быть напрямую использован с обычными числами типа `number` в операциях, так как это вызовет ошибку: + +```js +const biggy = 10n +const number = 5 + +console.log(biggy + number) // Ошибка +``` + +Чтобы провести операции между `BigInt` и обычными числами, их нужно явно преобразовать. Например: + +```js +const biggy = 10n +const number = 5 + +console.log(biggy + BigInt(number)) // 15n +console.log(Number(biggy) + number) // 15 +``` + +## Ограничения + +- **Нет поддержки дробных чисел:** `BigInt` работает только с целыми числами. Дробные числа нельзя использовать с этим типом данных. +- **Ограниченная поддержка в браузерах:** Хотя `BigInt` поддерживается большинством современных браузеров, старые версии могут не поддерживать этот тип. + +## Советы + +- Используйте `BigInt`, когда нужно работать с числами, которые превышают максимальное безопасное целое значение в JavaScript, то есть 253-1. +- Для стандартных вычислений с небольшими числами продолжайте использовать тип `number`, так как он занимает меньше памяти и более эффективен в операциях. +- Не забудьте проверять поддержку `BigInt` в тех средах, где используется ваш код, чтобы избежать неожиданных ошибок. From 260bf81968ba37764d03c4b92ebc7c93814c835f Mon Sep 17 00:00:00 2001 From: Matvey Romanov <38384967+ra1nbow1@users.noreply.github.com> Date: Mon, 14 Oct 2024 11:29:02 +0300 Subject: [PATCH 2/6] Update index.md --- js/bigint/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/bigint/index.md b/js/bigint/index.md index 63273e86ff..3029154ac6 100644 --- a/js/bigint/index.md +++ b/js/bigint/index.md @@ -14,7 +14,7 @@ tags: ## Кратко -Тип большого целого `BigInt` — примитивный тип, который представляет целые числа больше 253-1. Эти числа уже не помещаются в стандартный [примитив «число»](/js/number/). +Тип большого целого `BigInt` — примитивный тип, который представляет целые числа больше 253-1. Эти числа уже не помещаются в стандартный [примитив «число»](/js/number/). Этот тип может использоваться для работы с произвольно большими целыми числами, такими как идентификаторы, криптографические ключи или другие данные, где требуется высокая точность. From 161e078a1b5bd7ba567d2468b8dcc3d673771113 Mon Sep 17 00:00:00 2001 From: Matvey Romanov <38384967+ra1nbow1@users.noreply.github.com> Date: Mon, 14 Oct 2024 22:11:25 +0300 Subject: [PATCH 3/6] =?UTF-8?q?=D0=94=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D1=8F?= =?UTF-8?q?=D0=B5=D1=82=20=D0=B4=D0=BE=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/bigint/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/js/bigint/index.md b/js/bigint/index.md index 3029154ac6..76a6942926 100644 --- a/js/bigint/index.md +++ b/js/bigint/index.md @@ -77,6 +77,7 @@ console.log(Number(biggy) + number) // 15 - **Нет поддержки дробных чисел:** `BigInt` работает только с целыми числами. Дробные числа нельзя использовать с этим типом данных. - **Ограниченная поддержка в браузерах:** Хотя `BigInt` поддерживается большинством современных браузеров, старые версии могут не поддерживать этот тип. +- Не поддерживаются операции [унарного плюса](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unary_plus) и [сдвига битов вправо](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift) ## Советы From 2609725603560dad4a24ad669f224ada6673ed95 Mon Sep 17 00:00:00 2001 From: Tatiana Fokina Date: Fri, 18 Oct 2024 17:43:56 +0400 Subject: [PATCH 4/6] =?UTF-8?q?=D0=A0=D0=B5=D0=B4=D0=B0=D1=87=D0=B8=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/bigint/index.md | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/js/bigint/index.md b/js/bigint/index.md index 76a6942926..d6c4812e54 100644 --- a/js/bigint/index.md +++ b/js/bigint/index.md @@ -1,4 +1,3 @@ - --- title: "Большое целое" description: "В математике числа бесконечны, а в программировании — нет. Если число не влезает в стандартный `number`, то есть его старший брат." @@ -16,7 +15,7 @@ tags: Тип большого целого `BigInt` — примитивный тип, который представляет целые числа больше 253-1. Эти числа уже не помещаются в стандартный [примитив «число»](/js/number/). -Этот тип может использоваться для работы с произвольно большими целыми числами, такими как идентификаторы, криптографические ключи или другие данные, где требуется высокая точность. +Этот тип используют для работы с произвольно большими целыми числами: идентификаторами, криптографическими ключами и другими данными, где требуется высокая точность. ## Как пишется @@ -36,7 +35,7 @@ const alsoBig = BigInt(9997000254999999) Для `BigInt` определены операции сложения `+`, вычитания `-`, умножения `*`, взятия остатка от деления `%`, возведения в степень `**`. -Операция деления `/` также работает, но дробная часть будет отброшена: +Операция деления `/` также работает, но дробная часть отбросится: ```js const seven = 7n @@ -48,19 +47,21 @@ console.log(seven / five) -## Преобразование типов +### Преобразование типов -`BigInt` не может быть напрямую использован с обычными числами типа `number` в операциях, так как это вызовет ошибку: +В операциях `BigInt` невозможно использовать напрямую с обычными числами типа `number`: это приведёт к ошибке. ```js const biggy = 10n const number = 5 -console.log(biggy + number) // Ошибка +console.log(biggy + number) +// Uncaught TypeError: Cannot mix BigInt and other types, +// use explicit conversions ``` Чтобы провести операции между `BigInt` и обычными числами, их нужно явно преобразовать. Например: @@ -69,18 +70,25 @@ console.log(biggy + number) // Ошибка const biggy = 10n const number = 5 -console.log(biggy + BigInt(number)) // 15n -console.log(Number(biggy) + number) // 15 +console.log(biggy + BigInt(number)) +// 15n + +console.log(Number(biggy) + number) +// 15 ``` -## Ограничения +### Ограничения + +**Нет поддержки дробных чисел**. `BigInt` работает только с целыми числами. Дробные числа нельзя использовать с этим типом данных. + +**Ограниченная поддержка в браузерах**. Хотя `BigInt` поддерживается большинством браузеров, старые версии могут не поддерживать этот тип. + +В `BigInt` не поддерживаются операции [унарного плюса](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unary_plus) и [сдвига битов вправо](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift). + +## Подсказки -- **Нет поддержки дробных чисел:** `BigInt` работает только с целыми числами. Дробные числа нельзя использовать с этим типом данных. -- **Ограниченная поддержка в браузерах:** Хотя `BigInt` поддерживается большинством современных браузеров, старые версии могут не поддерживать этот тип. -- Не поддерживаются операции [унарного плюса](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unary_plus) и [сдвига битов вправо](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift) +💡 Используйте `BigInt`, когда работаете с числами, которые превышают максимальное безопасное целое значение в JavaScript — 253-1. -## Советы +💡 Продолжайте использовать тип `number` для стандартных вычислений с небольшими числами. Этот тип занимает меньше памяти и более эффективен в операциях. -- Используйте `BigInt`, когда нужно работать с числами, которые превышают максимальное безопасное целое значение в JavaScript, то есть 253-1. -- Для стандартных вычислений с небольшими числами продолжайте использовать тип `number`, так как он занимает меньше памяти и более эффективен в операциях. -- Не забудьте проверять поддержку `BigInt` в тех средах, где используется ваш код, чтобы избежать неожиданных ошибок. +💡 Проверяйте поддержку `BigInt` в средах, где используется ваш код. Так избежите неожиданных ошибок. From 58b38319c83b31373bb32cb44d33ae74894ae35b Mon Sep 17 00:00:00 2001 From: Matvey Romanov <38384967+ra1nbow1@users.noreply.github.com> Date: Sat, 19 Oct 2024 12:17:42 +0300 Subject: [PATCH 5/6] Update index.md --- js/bigint/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/bigint/index.md b/js/bigint/index.md index d6c4812e54..5bf566ad72 100644 --- a/js/bigint/index.md +++ b/js/bigint/index.md @@ -33,7 +33,7 @@ const biggy = 9997000254740991n const alsoBig = BigInt(9997000254999999) ``` -Для `BigInt` определены операции сложения `+`, вычитания `-`, умножения `*`, взятия остатка от деления `%`, возведения в степень `**`. +Для `BigInt` определены, например, операции сложения `+`, вычитания `-`, умножения `*`, взятия остатка от деления `%`, возведения в степень `**`. Операция деления `/` также работает, но дробная часть отбросится: From 8d6726d0a4708fedc441daf6a160429990ca6924 Mon Sep 17 00:00:00 2001 From: Tatiana Fokina Date: Sun, 20 Oct 2024 18:57:05 +0400 Subject: [PATCH 6/6] =?UTF-8?q?=D0=97=D0=B0=D0=BC=D0=B5=D0=BD=D1=8F=D0=B5?= =?UTF-8?q?=D1=82=20=D0=B3=D0=BB=D0=B0=D0=B3=D0=BE=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/bigint/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/bigint/index.md b/js/bigint/index.md index 5bf566ad72..9fd0df16e5 100644 --- a/js/bigint/index.md +++ b/js/bigint/index.md @@ -33,7 +33,7 @@ const biggy = 9997000254740991n const alsoBig = BigInt(9997000254999999) ``` -Для `BigInt` определены, например, операции сложения `+`, вычитания `-`, умножения `*`, взятия остатка от деления `%`, возведения в степень `**`. +`BigInt` поддерживает, например, операции сложения `+`, вычитания `-`, умножения `*`, взятия остатка от деления `%`, возведения в степень `**`. Операция деления `/` также работает, но дробная часть отбросится: