我有一个变量,它有时是负数,有时是正数。
在使用之前,我需要将其变为正数。如何实现这一点?
在这两个选择之间(感谢@Kooilnc提供的示例):
Number.prototype.abs = function(){
return Math.abs(this);
};
和
var negative = -23,
positive = -negative>0 ? -negative : negative;
选择第二种方法(否定)。它不需要函数调用,CPU 可以在非常少的指令中完成。快速、简单、高效。
Math.abs
在 Chrome 上快了近 10 倍:https://jsperf.com/ternary-vs-math-abs - Derek 朕會功夫Math.abs
只是简单地将第一位设置为0,没有任何条件语句,因为JS中的数字是以浮点数实现的。 - Derek 朕會功夫if (myvar < 0) {
myvar = -myvar;
}
或者myvar = Math.abs(myvar);
x = (x ^ (x >> 31)) - (x >> 31);
这种方法可能有点“hackish”,不过在某种奇怪的方式下看起来还不错。但我仍然建议使用Math.abs
(只是想展示另一种方法)。
顺便提一下,这种方法只适用于底层 JavaScript 引擎将整数存储为 32 位的情况,在我的机器上(32 位),Firefox 3.5 是这种情况(在 64 位机器上可能会不适用,我没有测试过...)
x < 0 ? -x : x
(在其他测试的浏览器中最快)。你的代码在Opera 10.63中慢1%,在Chrome 6.0中慢12%,在IE8中慢20%。 - some如果你不想使用 Math.Abs,你可以使用这个简单的 if 语句 :P
if (x < 0) {
x = -x;
}
function makePositive(number) {
if (number < 0) {
number = -number;
}
}
makepositive(-3) => 3 makepositive (5) => 5
希望这可以帮到您!Math.abs 可能适用于您,但如果不行,这个小函数可以将负数转换为正数。