От положительного числа к отрицательному числу в JavaScript? - PullRequest
73 голосов
/ 07 апреля 2011

В основном, обратная абс.Если у меня есть:

if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum = -slideNum }
console.log(slideNum)

Независимо от того, какая консоль ВСЕГДА возвращает положительное число.Как я могу это исправить?

Если я сделаю:

if($this.find('.pdxslide-activeSlide').index() < slideNum-1){
_selector.animate({left:(-slideNum*sizes.images.width)+'px'},750,'InOutPDX')
}
else{
_selector.animate({left:(slideNum*sizes.images.width)+'px'},750,'InOutPDX')
}

, это работает, но это не "СУХОЙ", а просто глупо иметь полный блок кода ПРОСТО для -

Ответы [ 11 ]

156 голосов
/ 07 апреля 2011
Math.abs(num) => Always positive
-Math.abs(num) => Always negative

Вы же понимаете, что для вашего кода

if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum = -slideNum }
console.log(slideNum)

Если найденный индекс равен 3, а значение slideNum равно 3,
тогда 3 <3-1 => ложь
поэтому slideNum остается положительным ??

Для меня это больше похоже на логическую ошибку.

71 голосов
/ 07 апреля 2011

Обратный абс - Math.abs(num) * -1.

24 голосов
/ 15 августа 2012

Основная формула для преобразования положительного в отрицательное или отрицательного в положительное:

i - (i * 2)
6 голосов
/ 01 января 2015

Чтобы получить отрицательную версию числа в JavaScript, вы всегда можете использовать битовый оператор ~.

Например, если у вас есть a = 1000 и вам нужно преобразовать его в отрицательное, вы можетевыполните следующие действия:

a = ~a + 1;

, в результате чего a будет равно -1000.

6 голосов
/ 07 апреля 2011

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

Если я попробую следующее в Firebug, похоже, это сработает:

>>> i = 5; console.log(i); i = -i; console.log(i);
5
-5

slideNum *= -1также работа.Как следует Math.abs(slideNum) * -1.

4 голосов
/ 16 марта 2018
var x = 100;
var negX = ( -x ); // => -100
4 голосов
/ 18 марта 2016

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

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

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

function makeNegative(number) {
    if (number > 0) {
        number = -number;
    }
}

makeNegative (-3) => -3 makeNegative (5) => -5

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

2 голосов
/ 02 июня 2018
var i = 10;
i = i / -1;

Результат: -10

var i = -10;
i = i / -1;

Результат: 10

Если вы поделите на отрицательное значение 1, оно всегда будет отображать ваш номер в любом случае.

1 голос
/ 07 января 2017

Используйте 0 - x

x - число, которое вы хотите инвертировать

0 голосов
/ 29 мая 2019
num * -1

Это сделало бы это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...