如何使用math.abs获取数字的绝对值而不使用?
这是我到目前为止所做的:
function absVal(integer) {
var abs = integer * integer;
return abs^2;
}
答案 0 :(得分:5)
您可以使用conditional operator和unary negation operator:
function absVal(integer) {
return integer < 0 ? -integer : integer;
}
答案 1 :(得分:4)
您也可以使用>> (Sign-propagating right shift)
function absVal(integer) {
return (integer ^ (integer >> 31)) - (integer >> 31);;
}
注意:这仅适用于整数
答案 2 :(得分:2)
由于数字的绝对值是&#34;数字从零开始的距离是多少&#34;,负数可以只是&#34;翻转&#34;积极的(如果你原谅我缺乏数学术语= P):
var abs = (integer < 0) ? (integer * -1) : integer;
或者,虽然我没有对它进行基准测试,但是从零减去而不是乘法(即0 - integer
)可能会更快。
答案 3 :(得分:-1)
我们没有理由不借用Java's implementation。
function myabs(a) {
return (a <= 0.0) ? 0.0 - a : a;
}
console.log(myabs(-9));
&#13;
这是如何运作的:
> 0
> 0
)答案 4 :(得分:-1)
检查数字是否小于零!如果是多则用-1;