使变量值为正

时间:2009-11-09 15:39:12

标签: javascript math

我有一个变量,有时会是负数,有时是正数。

在我使用之前,我需要让它变得积极。我怎么能做到这一点?

6 个答案:

答案 0 :(得分:54)

使用Math.abs方法。

下面有一条关于使用否定的评论(感谢Kelly让我考虑到这一点),如果你对{{进行本地引用,那么对于Math.abs而言,它会比Math.abs略快一些1}}函数(没有本地引用Math.abs要慢得多)。

查看answer to this question了解更多详情。小数字的差异可以忽略不计,我认为Math.abs是一种更清晰的“自我记录”代码的方式。

答案 1 :(得分:22)

在这两个选项之间(感谢@Kooilnc的例子):

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

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

选择第二个(否定)。它不需要函数调用,CPU可以用很少的指令来完成。快速,简单,高效。

答案 2 :(得分:13)

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

myvar = Math.abs(myvar);

答案 3 :(得分:2)

或者,如果你想避免函数调用(和分支),你可以使用这段代码:

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

它有点“hackish”,它看起来很奇怪:)但我仍然会坚持使用Math.abs(只是想表明这样做的另一种方式)

顺便说一下,这只适用于底层javascript引擎将整数存储为32位的情况,这在我的机器上的firefox 3.5中就是这种情况(32位,所以它可能无法在64位机器上运行,还没有测试过......)

答案 4 :(得分:1)

这不是jQuery实现,而是使用Javascript中的Math库

x = Math.abs(x);

答案 5 :(得分:0)

如果您不想使用Math.Abs​​,您可以使用以下简单语句:P

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

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

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

makepositive(-3)=&gt; 3 makepositive(5)=&gt; 5

希望这有帮助! Math.abs可能会对你有用,但如果不是这样的话