Делая переменное значение положительным

У меня есть переменная, которая иногда будет отрицательной и иногда положительной.

Прежде чем использовать его, мне нужно сделать его положительным. Как я могу это сделать?

Ответ 1

Используйте метод Math.abs.

Ниже приведен комментарий об использовании отрицания (спасибо Kelly за то, что задумался над этим), и немного быстрее vs Math.abs за большой объем конверсий, если вы сделаете локальную ссылку на функцию Math.abs (без локальной ссылки Math.abs намного медленнее).

Посмотрите на ответ на этот вопрос для более подробной информации. В небольших количествах разница незначительна, и я думаю, что Math.abs - это гораздо более чистый способ "самодокументирования" кода.

Ответ 2

Между этими двумя вариантами (благодаря @Kooilnc для примера):

Number.prototype.abs = function(){
    return Math.abs(this);
};

и

var negative = -23, 
    positive = -negative>0 ? -negative : negative;

перейти со вторым (отрицание). Он не требует вызова функции, и процессор может сделать это в очень немногих инструкциях. Быстро, легко и эффективно.

Ответ 3

if (myvar < 0) {
  myvar = -myvar;
}

или

myvar = Math.abs(myvar);

Ответ 4

или, если вы хотите избежать вызова функции (и ветвления), вы можете использовать этот код:

x = (x ^ (x >> 31)) - (x >> 31);

он немного "хакерский", и он выглядит неплохо каким-то странным образом:), но я все равно придерживаюсь Math.abs (просто хотел показать еще один способ сделать это)

btw, это работает только в том случае, если базовый механизм javascript хранит целые числа как 32-битные, что является случаем в firefox 3.5 на моей машине (это 32-разрядный, поэтому он может не работать на 64-битной машине, не тестировался...)

Ответ 5

Это не реализация jQuery, но использует Math-библиотеку из Javascript

x = Math.abs(x);

Ответ 6

Если вы не хотите использовать Math.Abs, вы можете сделать это простое утверждение if: P

if (x < 0) {
    x = -x;
}

Конечно, вы могли бы сделать эту функцию такой

function makePositive(number) {
    if (number < 0) {
        number = -number;
    }
}

положительный (-3) = > 3 pospositive (5) = > 5

Надеюсь, это поможет! Math.abs, скорее всего, сработает для вас, но если это не так мало