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. Современные браузеры и среды выполнения поддерживают её без изменений в поведении. В более старых средах требуется использование полифилов.
Расширенные примеры использования
Функцию можно применять в различных сценариях, включая обработку массивов и математические вычисления.
Классификация массива чисел:
const numbers = [5, -3, 0, 12, -0, "текст"];
const signs = numbers.map(num => Math.sign(num));
console.log(signs);[1, -1, 0, 1, 0, NaN]
Реализация функции сигнум с дополнительной проверкой:
function customSign(x) {
if (isNaN(x)) return NaN;
return x > 0 ? 1 : x < 0 ? -1 : 0;
}
console.log(customSign("15"));1
Использование в условии направления движения:
const velocity = -5;
const direction = Math.sign(velocity);
if (direction === 1) console.log("Движение вперед");
else if (direction === -1) console.log("Движение назад");
else console.log("Остановка");Движение назад
Обработка дробных чисел:
console.log(Math.sign(0.0001));
console.log(Math.sign(-Infinity));1 -1
Аналоги функции в других языках
Разные языки программирования реализуют определение знака числа:
PHP: функция sign() отсутствует, но можно использовать сравнения или создать пользовательскую функцию.
echo (5 <=> 0); // Возвращает 1, 0 или -11
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); Не ноль