Sign: примеры (JAVASCRIPT)

Определение знака числа с помощью функции sign в JavaScript
Раздел: Математика, Знак числа
sign(number): number

Описание функции sign

Функция Math.sign() определяет знак переданного числа, указывая, является ли оно положительным, отрицательным, нулём или NaN. Она возвращает числовое значение, представляющее знак аргумента.

Использование функции актуально в ситуациях, когда требуется классифицировать число по его знаку, например, при валидации данных, обработке пользовательского ввода или реализации математических алгоритмов.

Аргументы функции

Функция принимает один обязательный аргумент:

  • x – число, знак которого необходимо определить. Если аргумент не является числом, он будет автоматически преобразован в число.

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

  • 1 – если аргумент является положительным числом (больше 0).
  • -1 – если аргумент является отрицательным числом (меньше 0).
  • 0 – если аргумент равен положительному нулю (0) или отрицательному нулю (-0).
  • -0 – в специфических случаях, когда аргумент равен отрицательному нулю, некоторые реализации могут вернуть -0, но стандарт ECMAScript определяет возврат 0.
  • NaN – если аргумент не может быть преобразован в число (NaN) или является NaN.

Примеры применения sign

Рассмотрим базовые примеры работы функции с разными типами аргументов.

console.log(Math.sign(15));
1
console.log(Math.sign(-42));
-1
console.log(Math.sign(0));
console.log(Math.sign(-0));
0
0
console.log(Math.sign("строка"));
NaN
console.log(Math.sign("-5"));
console.log(Math.sign(""));
-1
0

Похожие функции в JavaScript

В JavaScript существуют другие способы определения знака числа:

  • Сравнение с нулём: использование операторов сравнения (>, <, ===) для проверки знака. Этот метод предоставляет больше гибкости, но требует больше кода.
  • Функция Math.abs(): возвращает абсолютное значение числа, но не указывает его знак. Может комбинироваться с другими проверками.

Функция Math.sign() предпочтительнее при необходимости получения конкретного числового значения знака. Сравнения лучше использовать, когда требуется выполнить разные действия в зависимости от знака.

Распространенные ошибки

При использовании Math.sign() возможны следующие проблемы:

Ожидание строкового результата: функция возвращает число, а не символ.

console.log(Math.sign(10) === "+");
false

Некорректная обработка нечисловых строк: преобразование может привести к неожиданным результатам.

console.log(Math.sign(" "))
0

Путаница с отрицательным нулём: в некоторых средах возможно возвращение -0.

console.log(Math.sign(-0) === -0);
false

Изменения в современных версиях

Функция Math.sign() была добавлена в стандарт ECMAScript 2015 (ES6). До этой версии функция отсутствовала в спецификации JavaScript. Современные браузеры и среды выполнения поддерживают её без изменений в поведении. В более старых средах требуется использование полифилов.

Расширенные примеры использования

Функцию можно применять в различных сценариях, включая обработку массивов и математические вычисления.

Классификация массива чисел:

Пример javascript
const numbers = [5, -3, 0, 12, -0, "текст"];
const signs = numbers.map(num => Math.sign(num));
console.log(signs);
[1, -1, 0, 1, 0, NaN]

Реализация функции сигнум с дополнительной проверкой:

Пример javascript
function customSign(x) {
  if (isNaN(x)) return NaN;
  return x > 0 ? 1 : x < 0 ? -1 : 0;
}
console.log(customSign("15"));
1

Использование в условии направления движения:

Пример javascript
const velocity = -5;
const direction = Math.sign(velocity);
if (direction === 1) console.log("Движение вперед");
else if (direction === -1) console.log("Движение назад");
else console.log("Остановка");
Движение назад

Обработка дробных чисел:

Пример javascript
console.log(Math.sign(0.0001));
console.log(Math.sign(-Infinity));
1
-1

Аналоги функции в других языках

Разные языки программирования реализуют определение знака числа:

PHP: функция sign() отсутствует, но можно использовать сравнения или создать пользовательскую функцию.

echo (5 <=> 0); // Возвращает 1, 0 или -1
1

Python: функция copysign() из модуля math или сравнения.

import math
print(math.copysign(1, -3))
-1.0

MySQL: оператор SIGN() возвращает -1, 0 или 1.

SELECT SIGN(-10);
-1

C/C++: функция signbit() из math.h определяет знак, но возвращает ненулевое значение для отрицательных чисел.

#include 
int sign = signbit(-5.0);
Не ноль

JS sign function comments

En
Sign Returns the sign of a number, indicating whether the number is positive, negative, or zero