如何在不使用 math.abs 的情况下获得数字的绝对值?
这是我到目前为止所拥有的:
function absVal(integer) {
var abs = integer * integer;
return abs^2;
}
如何在不使用 math.abs 的情况下获得数字的绝对值?
这是我到目前为止所拥有的:
function absVal(integer) {
var abs = integer * integer;
return abs^2;
}
你也可以使用>> (Sign-propagating right shift)
function absVal(integer) {
return (integer ^ (integer >> 31)) - (integer >> 31);;
}
注意:这仅适用于整数
因为一个数字的绝对值是“这个数字离零有多远”,一个负数可以被“翻转”为正数(如果你原谅我缺乏数学术语=P):
var abs = (integer < 0) ? (integer * -1) : integer;
或者,虽然我没有对其进行基准测试,但从零减去而不是相乘(即)可能更快0 - integer
。
检查数字是否小于零!如果是,则将其与 -1 相乘;
我们没有理由不能借用Java 的实现。
function myabs(a) {
return (a <= 0.0) ? 0.0 - a : a;
}
console.log(myabs(-9));
这是如何工作的:
> 0
> 0
)