Skip to content

Commit

Permalink
[ru] update `Web/JavaScript/Reference/Global_Objects/Number/isSafeInt…
Browse files Browse the repository at this point in the history
…eger` translation (#24975)

* fixed incorrect display of number 2 to the power of 53
* update translation
* improve whitespaces

---------

Co-authored-by: Leonid Vinogradov <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
  • Loading branch information
3 people authored Dec 10, 2024
1 parent acf9d20 commit 58bf130
Showing 1 changed file with 23 additions and 30 deletions.
Original file line number Diff line number Diff line change
@@ -1,65 +1,57 @@
---
title: Number.isSafeInteger()
slug: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
l10n:
sourceCommit: 70f09675ddcfc75a3bb66d2dce4cf82738948a37
---

{{JSRef}}

Метод **`Number.isSafeInteger()`** определяет, является ли переданное значение _безопасным целым числом_.
Статический метод **`Number.isSafeInteger()`** определяет, является ли переданное значение _безопасным целым числом_.

{{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}}

Безопасное целое число это такое число, которое:

- может быть точно представлено числом IEEE-754 двойной точности и
- чьё представление IEEE-754 не может быть результатом округления любого другого целого числа, соответствующего представлению IEEE-754.

Например, число `253 - 1` является безопасным целым числом: оно может быть представлено точно и никакое другое целое число не округляется к нему ни в каком режиме округления IEEE-754. В противовес ему, число `253` _не является_ безопасным целым числом: оно может быть точно представлено в IEEE-754, но целое число `253 + 1` не может быть напрямую представлено в IEEE-754 и округляется к числу `253` в режимах округления к ближайшему и к нулю. Безопасные целые числа состоят из всех целых чисел в диапазоне от `-(253 - 1)` до `253 - 1` включительно (± `9007199254740991` или ± 9,007,199,254,740,991).

Обработка значений, больших или меньших чем \~9 квадриллионов, с высокой точностью требует использования [библиотеки, умеющей работать с длиной арифметикой](https://ru.wikipedia.org/wiki/%D0%94%D0%BB%D0%B8%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0). Ознакомьтесь с [Что Каждому Программисту Необходимо Знать об Арифметике с Вещественными числами](http://floating-point-gui.de/) для получения дополнительной информации о представлении чисел, с плавающей запятой.

Для больших целочисленных значений, рассмотрите возможность использования типа {{jsxref("BigInt")}}.

## Синтаксис

```
```js-nolint
Number.isSafeInteger(testValue)
```

### Параметры

- `testValue`
- : Значение, проверяемое на целочисленную «безопасность».
- : Проверяемое значение.

### Возвращаемое значение

{{jsxref("Boolean")}} значение, сообщающее о том, является ли переданное значение безопасным целочисленным числом или же нет.
Логическое значение `true` если переданное значение является безопасным целым числом, в противном случае `false`.

## Описание

К безопасным целым числам относятся все целые числа от -(2<sup>53</sup> – 1) до 2<sup>53</sup> – 1 включительно (±9 007 199 254 740 991). Безопасное целое число — это целое число, которое:

- может быть точно представлено как число двойной точности по стандарту IEEE-754, и
- это представление не может быть результатом округления любого другого целого числа для соответствия представлению по стандарту IEEE-754.

Например, 2<sup>53</sup> - 1 является безопасным целым числом: оно может быть точно представлено, и никакое другое целое число не округляется до него ни при каком режиме округления IEEE-754. А вот 2<sup>53</sup> _не_ является безопасным целым числом: оно может быть точно представлено в IEEE-754, но целое число 2<sup>53</sup> + 1 не может быть представлено в IEEE-754, а вместо этого округляется до 2<sup>53</sup> при округлении до ближайшего и до нуля.

Обработка значений больше или меньше \~9 квадриллионов с полной точностью требует использования библиотек, поддерживающих [арифметику произвольной точности](https://ru.wikipedia.org/wiki/Длинная_арифметика). Дополнительную информацию о представлениях чисел с плавающей точкой смотрите в [The Floating-Point Guide](https://floating-point-gui.de/) (англ.).

Для бо́льших целых чисел рассмотрите возможность использования типа {{jsxref("BigInt")}}.

## Примеры

```js
Number.isSafeInteger(3); // true
Number.isSafeInteger(Math.pow(2, 53)); // false
Number.isSafeInteger(Math.pow(2, 53) - 1); // true
Number.isSafeInteger(2 ** 53); // false
Number.isSafeInteger(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
```

## Полифил

```js
Number.isSafeInteger =
Number.isSafeInteger ||
function (value) {
return (
Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER
);
};
```

## Спецификации

{{Specifications}}
Expand All @@ -70,7 +62,8 @@ Number.isSafeInteger =

## Смотрите также

- Объект {{jsxref("Number")}}, которому принадлежит этот метод.
- [Полифил `Number.isSafeInteger` в `core-js`](https://github.com/zloirock/core-js#ecmascript-number)
- {{jsxref("Number")}}
- {{jsxref("Number.MIN_SAFE_INTEGER")}}
- {{jsxref("Number.MAX_SAFE_INTEGER")}}
- {{jsxref("BigInt")}}

0 comments on commit 58bf130

Please sign in to comment.