Math.sign() в JavaScript — знак числа


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

Метод Math.sign() є частиною об'єкта Math в JavaScript і використовується для визначення знаку числа. Його основна корисність полягає у тому, що за допомогою цього методу можна легко і швидко визначити, чи є число додатним, від'ємним чи нулем. Це може бути корисним у різних математичних операціях або умовних виразах.

Для того, щоб використовувати Math.sign(), потрібно передати йому число як аргумент. Метод повертає:

  • 1, якщо число додатнє;
  • -1, якщо число від'ємне;
  • 0, якщо число рівне нулю і його знак позитивний;
  • -0, якщо число рівне нулю і його знак негативний;
  • NaN, якщо аргумент — це не число.

Давайте розглянемо декілька прикладів:

  1. Простий приклад:

    console.log(Math.sign(3));     // 1
    console.log(Math.sign(-3));    // -1
    console.log(Math.sign(0));     // 0
    
  2. Використання в умовному виразі:

    let num = -5;
    if (Math.sign(num) === -1) {
     console.log('Число від\'ємне');
    } else {
     console.log('Число додатнє або нуль');
    }
    
  3. Робота з невідомими або динамічними значеннями:

    let values = [3, -2, 0, "текст", NaN];
    for (let value of values) {
     console.log(`Знак числа ${value} - ${Math.sign(value)}`);
    }
    

Особливості методу Math.sign():

  1. Якщо аргумент не є числом, метод автоматично спробує перетворити його на число. Наприклад, Math.sign("5") повертає 1, але Math.sign("текст") повертає NaN.
  2. Для дуже малих чисел, які є близькими до нуля, але все ще мають певний знак (наприклад, з-за обрізання або заокруглення), Math.sign() допоможе визначити цей знак..
автор: Bond

Порада

Для досвідчених програмістів: у випадку роботи з великими масивами чисел, де потрібно визначити знак кожного числа, використання Math.sign() може бути дуже корисним для оптимізації коду. Використання цього методу може спростити і прискорити обробку даних.

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

Якщо вам потрібно виконати якусь операцію тільки для додатних або тільки для від'ємних чисел, використовуйте Math.sign() для умовного програмування. Наприклад:

let number = -5;
if (Math.sign(number) === -1) {
  console.log("Число від'ємне");
}
автор: Bond
Нотатка

При роботі із не числовими типами даних, Math.sign() повертає NaN (не число). Тому завжди перевіряйте вхідні дані перед використанням методу, аби уникнути неочікуваних результатів. Наприклад: Math.sign("текст") поверне NaN.

автор: Bond

Синтаксис

Math.sign(x)

Параметри

x

Число, знак якого потрібно визначити.

автор: Bond

Повернення

number

Повертає число, яке представляє знак x:

  • Якщо x додатнє, повертає 1.
  • Якщо x від'ємне, повертає -1.
  • Якщо x - це додатний нуль, повертає 0.
  • Якщо x - це від'ємний нуль, повертає -0.
  • У всіх інших випадках повертає NaN, що позначає "не число".
автор: Bond

Переглядачі

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

Приклади

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

У цьому прикладі ми будемо сортувати масив чисел, розподіляючи їх на додатні, від'ємні та нулі. Це демонструє, як Math.sign() може бути корисним у більш складних операціях, наприклад, при роботі з масивами.

const numbers = [3, -2, 0, 5, -1, 0, -4, 8];

const positive = [];
const negative = [];
const zeros = [];

// Розподіляємо числа по масивах за їх знаком
for (const num of numbers) {
    const sign = Math.sign(num);
    if (sign === 1) {
        positive.push(num);
    } else if (sign === -1) {
        negative.push(num);
    } else {
        zeros.push(num);
    }
}

console.log("Додатні числа:", positive);
console.log("Від'ємні числа:", negative);
console.log("Нулі:", zeros);
автор: Bond

За допомогою цього коду користувач може ввести будь-яке число у поле вводу і, натиснувши кнопку "Перевірити знак", отримає результат про знак введеного числа.

HTML

<header>
  <h2 class="title">Math.sign()</h2>
  <p class="description">Визначає знак числа.</p>
</header>
<main>
  <div class="result">
    <label for="inputNumber">Введіть число:</label>
    <input type="number" id="inputNumber" value="0">
    <button onclick="checkSign()">Перевірити знак</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);
}

JS

function checkSign() {
  const inputValue = document.getElementById('inputNumber').value;
  const sign = Math.sign(inputValue);
  let resultText = '';

  if (sign === 1) {
    resultText = 'Додатнє число.';
  } else if (sign === -1) {
    resultText = 'Від\'ємне число.';
  } else {
    resultText = 'Нуль або не число.';
  }

  document.getElementById('output').innerText = 'Результат: ' + resultText;
}
//# sourceURL=pen.js
автор: Bond

У цьому прикладі ми використовуємо метод Math.sign() для того, щоб визначити знак числа і вивести відповідне повідомлення у консоль.

const number = -15;

// Використовуємо Math.sign() для отримання знаку числа
const sign = Math.sign(number);

// Виводимо результат
if (sign === 1) {
    console.log("Число додатнє");
} else if (sign === -1) {
    console.log("Число від'ємне");
} else {
    console.log("Це нуль");
}
автор: 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`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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