Skip to content

Commit

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

* fix superscript in range

* update translation

* Update files/ru/web/javascript/reference/global_objects/number/max_safe_integer/index.md

---------

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 Jul 30, 2024
1 parent 8c4dd55 commit 68c8f91
Showing 1 changed file with 20 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,35 +1,44 @@
---
title: Number.MAX_SAFE_INTEGER
slug: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
l10n:
sourceCommit: fcd80ee4c8477b6f73553bfada841781cf74cf46
---

{{JSRef}}

## Сводка
Статическое свойство **`Number.MAX_SAFE_INTEGER`** представляет максимальное безопасное целочисленное значение в JavaScript (2<sup>53</sup> – 1).

Константа **`Number.MAX_SAFE_INTEGER`** представляет максимальное безопасное целочисленное значение в JavaScript (`253 - 1`).
Для бо́льших целых чисел используется {{jsxref("BigInt")}}.

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

## Значение

`9007199254740991` (9,007,199,254,740,991 или приблизительно 9 квадриллионов).

{{js_property_attributes(0, 0, 0)}}

## Описание

Константа `MAX_SAFE_INTEGER` имеет значение `9007199254740991`. Смысл этого числа в том, что в JavaScript используется [формат чисел с плавающей запятой двойной точности](https://ru.wikipedia.org/wiki/Число_двойной_точности), как определено в стандарте [IEEE 754](https://ru.wikipedia.org/wiki/IEEE_754), а он может безопасно представлять числа только в диапазоне от `-(253 - 1)` до `253 - 1`.
[Формат чисел с плавающей запятой двойной точности](https://ru.wikipedia.org/wiki/Число_двойной_точности) имеет только 52 бита для представления [мантиссы](/ru/docs/Web/JavaScript/Reference/Global_Objects/Number#number_encoding), поэтому он может безопасно представлять целые числа в диапазоне от -(2<sup>53</sup> – 1) до 2<sup>53</sup> – 1. «Безопасность» в этом контексте означает способность точно представлять целые числа и правильно их сравнивать. Например, `Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2` будет иметь истинное значение, что математически неверно. Больше информации в {{jsxref("Number.isSafeInteger()")}}.

Поскольку `MAX_SAFE_INTEGER` является статическим свойством объекта {{jsxref("Global_Objects/Number", "Number")}}, вы всегда должны использовать его как `Number.MAX_SAFE_INTEGER`, а не как свойство созданного вами объекта {{jsxref("Global_Objects/Number", "Number")}}.
Поскольку `MAX_SAFE_INTEGER` является статическим свойством объекта {{jsxref("Number")}}, вы всегда должны использовать его как `Number.MAX_SAFE_INTEGER`, а не как свойство числового значения.

## Примеры

### Значение MAX_SAFE_INTEGER

```js
Number.MAX_SAFE_INTEGER; // 9007199254740991
Math.pow(2, 53) - 1; // 9007199254740991
```

## Полифил
### Связь между MAX_SAFE_INTEGER и EPSILON

{{jsxref("Number.EPSILON")}} — это 2<sup>-52</sup>, а `MAX_SAFE_INTEGER` — это (2<sup>53</sup> – 1), оба значения являются производными от размера мантиссы, который составляет 53 бита (при этом старший бит всегда равен 1). Их умножение даст значение, очень близкое (но не равное) 2.

```js
if (!Number.MAX_SAFE_INTEGER) {
Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
}
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
```

## Спецификации
Expand All @@ -42,5 +51,7 @@ if (!Number.MAX_SAFE_INTEGER) {

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

- [Полифил `Number.MAX_SAFE_INTEGER` в `core-js`](https://github.com/zloirock/core-js#ecmascript-number)
- {{jsxref("Number.MIN_SAFE_INTEGER")}}
- {{jsxref("Number.isSafeInteger()")}}
- {{jsxref("BigInt")}}

0 comments on commit 68c8f91

Please sign in to comment.