Положительное число к отрицательному числу в JavaScript?


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

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')
}

это работает Тхо, но это не "сухой" и просто глупо иметь весь блок кода только для для -

7 67

7 ответов:

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 false
так что slideNum остается положительным??

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

обратная сторона АБС Math.abs(num) * -1.

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

i - (i * 2)

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

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

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

slideNum *= -1 также должны работать. Как и должно Math.abs(slideNum) * -1.

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

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

a = ~a + 1;

что привело бы к a будучи -1000.

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

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

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

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

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

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

использовать 0-x

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