web-dev-qa-db-ja.com

JavaScriptで正の数から負の数へ?

基本的に、腹筋の逆。私が持っている場合:

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

カントーは動作しますが、「DRY」ではなく、-のコードブロック全体をそのまま保持するのは愚かです

76
Oscar Godson
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の場合
then 3 <3-1 => false
so slideNum 正のまま ??

私にはもっと論理エラーのように見えます。

159
RichardTheKiwi

Absの逆はMath.abs(num) * -1です。

71
Jakub Hampl

正から負、または負から正に反転する基本的な式:

i - (i * 2)
24
Blake

JavaScriptで数値の負のバージョンを取得するには、いつでも~ビット演算子を使用できます。

たとえば、a = 1000があり、それをネガに変換する必要がある場合、次のことができます。

a = ~a + 1;

aは-1000になります。

7

コントロールがifの本体に挿入されますか? ifの条件は常に当てはまりますか?そうでない場合、ifの本体は実行されず、slideNumは正のままです。私はこれがおそらくあなたが見ているものであるという推測を危険にさらすつもりです。

Firebugで次のことを試すと、うまくいくようです:

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

slideNum *= -1も機能するはずです。 Math.abs(slideNum) * -1のように。

6
Vivin Paliath
var x = 100;
var negX = ( -x ); // => -100
5
tpayne84

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はおそらくあなたのために動作しますが、それがこれではない場合

4
Ash Pettit
var i = 10;
i = i / -1;

結果:-10

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

結果:10

負の1で除算すると、常にどちらの方法でも数字が反転します。

2
Jeff Price
num * -1

これはあなたのためにそれを行います。

1
Vibhor Dube

0-xを使用

xは、反転する数値です

1
milesman34

バニラジャバスクリプトで

if(number > 0)
  return -1*number;

number上記は、変換する正の数です

このコードは、-1を掛けることで、正の数だけを負の数に変換します。

0
perfo