[英]How do I get the absolute value of an integer without using Math.abs?
如何在不使用 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
)可能会更快。
迟到的回应,但我认为这是你想要完成的:
function absVal(integer) {
return (integer**2)**.5;
}
它平方 integer 然后取平方根。 它将消除负面影响。
我们没有理由不借用Java的实现 。
function myabs(a) { return (a <= 0.0) ? 0.0 - a : a; } console.log(myabs(-9));
这是如何工作的:
> 0
> 0
) 检查数字是否小于零! 如果是那么多了它-1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.