JavaScript中的正数到负数?

Osc*_*son 80 javascript math jquery

基本上,abs的反向.如果我有:

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

无论什么控制台总是返回正数.我该如何解决?

如果我做:

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')
}
Run Code Online (Sandbox Code Playgroud)

它可以工作,但它不是"干"而只是愚蠢的整个代码块只是为了一个 -

Ric*_*iwi 167

Math.abs(num) => Always positive
-Math.abs(num) => Always negative
Run Code Online (Sandbox Code Playgroud)

但是,您确实意识到,对于您的代码而言

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

如果找到的索引是3并且slideNum是3,
那么3 <3-1 => false
所以slideNum 保持正值

它看起来更像是一个逻辑错误.


Jak*_*mpl 74

abs的反面是Math.abs(num) * -1.

  • 更短:`return -Math.abs(num);` (8认同)
  • 这总是返回负值,如果 num 为负数,它不会改变符号。 (2认同)

小智 25

将正面反转为负面或负面反转为正面的基本公式:

i - (i * 2)
Run Code Online (Sandbox Code Playgroud)

  • `i*-1`有什么问题?另外,我不确定这是否回答了实际问题. (24认同)
  • 它在架构上依赖,但0 - 我可能会更快 (4认同)

Vib*_*ube 10

num * -1
Run Code Online (Sandbox Code Playgroud)

这会为你做的。


Ben*_*ams 7

要在JavaScript中获得数字的负数版本,您始终可以使用~按位运算符.

例如,如果您有a = 1000并且需要将其转换为否定值,则可以执行以下操作:

a = ~a + 1;

这将导致a-1000.

  • 为什么不是 `a = -a` ? (2认同)

Viv*_*ath 6

你确定控制进入了身体if吗?if一如既往的条件是否正确?因为如果不这样做,那么遗体if将永远不会被执行并slideNum保持积极态度.我打算猜测这可能就是你所看到的.

如果我在Firebug中尝试以下操作,它似乎工作:

>>> i = 5; console.log(i); i = -i; console.log(i);
5
-5
Run Code Online (Sandbox Code Playgroud)

slideNum *= -1也应该工作.应该如此Math.abs(slideNum) * -1.


Ash*_*tit 5

如果您不想使用 Math.Abs​​ * -1,您可以使用这个简单的 if 语句:P

if (x > 0) {
    x = -x;
}
Run Code Online (Sandbox Code Playgroud)

当然你可以把它变成这样的功能

function makeNegative(number) {
    if (number > 0) {
        number = -number;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助!Math.abs 可能会为你工作,但如果它不是那么一点点

  • 我个人一直在查看旧的堆栈溢出问题。当然,这对专业人士来说不会有太大帮助,但也许初学者可能会喜欢这个提示!也就是说,最简单的方法确实如上所述 -Math.Abs​​(-3) 如上所述,Math.Abs​​ 将任何值变为正值。那么负前缀就让它变成负数 (2认同)

tpa*_*e84 5

var x = 100;
var negX = ( -x ); // => -100
Run Code Online (Sandbox Code Playgroud)

  • 请添加一些解释编辑您的答案,避免仅代码答案 (2认同)
  • @GGO ...我不确定这怎么还不清楚,但是可以肯定:通过在值前面添加减号,然后将其括在括号中,对值进行求值...结果是价值。 (2认同)

bre*_*ine 5

Javascript 有一个专门的操作符:一元否定

TL;DR:这是减号!

要否定一个数字,只需-以最直观的方式为其添加前缀。无需编写函数,使用Math.abs()乘法-1或使用按位运算符。

一元否定适用于数字文字:

let a = 10;  // a is `10`
let b = -10; // b is `-10`
Run Code Online (Sandbox Code Playgroud)

它也适用于变量:

let x = 50;
x = -x;      // x is now `-50`

let y = -6;
y = -y;      // y is now `6`
Run Code Online (Sandbox Code Playgroud)

如果您使用分组运算符(又名括号),您甚至可以多次使用它:

l = 10;       // l is `10`
m = -10;      // m is `-10`
n = -(10);    // n is `-10`
o = -(-(10)); // o is `10`
p = -(-10);   // p is `10` (double negative makes a positive)
Run Code Online (Sandbox Code Playgroud)

以上所有内容也适用于变量。