Number.MIN_SAFE_INTEGER — межа цілих чисел у JavaScript


Загальний опис

Number.MIN_SAFE_INTEGER – це властивість у JavaScript, яка представляє найменше ціле безпечне число, з яким можна працювати, де "безпечне" означає, що воно може бути точно представлене як ціле число в стандартному форматі IEEE-754. В основному, ця властивість корисна при операціях порівняння або обчисленнях, де точність є критичною.

Використання Number.MIN_SAFE_INTEGER досить просте. Воно надає фіксоване значення, яке дорівнює -9007199254740991.

Приклад:

console.log(Number.MIN_SAFE_INTEGER); // виведе: -9007199254740991

При порівнянні або виконанні операцій з великими числами може виникнути необхідність перевірки, чи є результат безпечним для подальшої роботи. Ось як ви можете це робити:

function isSafeNumber(n) {
  return n <= Number.MAX_SAFE_INTEGER && n >= Number.MIN_SAFE_INTEGER;
}

console.log(isSafeNumber(-9007199254740992)); // виведе: false
console.log(isSafeNumber(-9007199254740991)); // виведе: true

Ключові особливості Number.MIN_SAFE_INTEGER:

  1. Це статична властивість, тому її не потрібно і не можна створювати через конструктор.
  2. Завжди звертайте увагу на межі безпечних чисел, коли працюєте з великими числами, щоб уникнути втрати точності.
  3. Якщо вам потрібно працювати з числами, які виходять за межі безпечного діапазону, розгляньте використання спеціальних бібліотек, які надають підтримку великих чисел.
автор: Bond

Порада

Незважаючи на назву, Number.MIN_SAFE_INTEGER лише вказує на найменше безпечне ціле число. Якщо вам потрібно визначити, чи є довільне число безпечним цілим числом в JavaScript, використовуйте Number.isSafeInteger().

автор: Bond
Порада

Якщо ви плануєте виконувати математичні операції із значеннями, що наближаються до Number.MIN_SAFE_INTEGER, будьте обережні. При переповненні результати можуть стати непередбачуваними. Наприклад:

let value = Number.MIN_SAFE_INTEGER;
console.log(value - 1);  // Повертає некоректне значення!
автор: Bond
Нотатка

Звертайте увагу на те, де ви використовуєте Number.MIN_SAFE_INTEGER. Якщо ви порівнюєте значення із зовнішніми джерелами (наприклад, даними з бази даних), переконайтеся, що ці джерела також розуміють "безпечні" межі JavaScript.

автор: Bond
Нотатка

Використовуйте Number.MIN_SAFE_INTEGER для перевірки, чи є число безпечним для точного представлення в JavaScript. Це корисно, якщо ви працюєте з дуже великими або дуже малими числами.

function isSafeInteger(value) {
  return value >= Number.MIN_SAFE_INTEGER && value <= Number.MAX_SAFE_INTEGER;
}
автор: Bond

Синтаксис

Number.MIN_SAFE_INTEGER

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
34 31 9 21 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
37 34 31 9
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.12.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

Коли користувач вводить число в поле для вводу і натискає кнопку "Перевірити", скрипт перевіряє, чи є це число меншим або дорівнює Number.MIN_SAFE_INTEGER та виводить відповідне повідомлення.

HTML

<header>
  <h2 class="title">Number.MIN_SAFE_INTEGER</h2>
  <p class="description">Повертає мінімальне (найбільше від'ємне) ціле число, яке може бути надійно представлене в JavaScript.</p>
</header>
<main>
  <div class="result">
    <p>Чи є дане число безпечним для роботи в JavaScript?</p>
    <input type="number" id="numberInput" placeholder="Введіть число" />
    <button onclick="checkSafety()">Перевірити</button>
    <p id="output"></p>
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

button {
  margin-top: 10px;
}

JS

function checkSafety() {
  const num = Number(document.getElementById('numberInput').value);
  if (num <= Number.MIN_SAFE_INTEGER) {
    document.getElementById('output').innerText = 'Це число не є безпечним для роботи в JavaScript!';
  } else {
    document.getElementById('output').innerText = 'Це число є безпечним для роботи в JavaScript.';
  }
}
//# sourceURL=pen.js
автор: Bond

У цьому прикладі ми створимо функцію, яка фільтрує масив чисел так, щоб лише числа, що не виходять за межі безпечного діапазону, опинилися у результаті. Це корисно, наприклад, при обробці даних із зовнішніх джерел.

function filterSafeIntegers(numbers) {
    return numbers.filter(number => 
        number >= Number.MIN_SAFE_INTEGER && number <= Number.MAX_SAFE_INTEGER
    );
}

const numbersArray = [1, 2, 3, Number.MIN_SAFE_INTEGER - 1, Number.MAX_SAFE_INTEGER + 1];

const safeNumbers = filterSafeIntegers(numbersArray);

console.log(safeNumbers);  // [1, 2, 3]
автор: Bond

У цьому прикладі ми розглянемо, як можна використовувати Number.MIN_SAFE_INTEGER для перевірки на переповнення при виконанні операцій віднімання.

const value = Number.MIN_SAFE_INTEGER;

// Виконуємо операцію віднімання
const result = value - 5;

// Перевіряємо, чи результат є безпечним цілим числом
if (result < Number.MIN_SAFE_INTEGER) {
    console.log("Операція викликала переповнення!");
} else {
    console.log("Результат: " + result);
}
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід