如何在不使用 Math.abs 的情况下获取整数的绝对值?
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;
}
因为一个数的绝对值是"how far the number is from zero",一个负数可以是"flipped"正数(请原谅我缺乏数学术语=P):
var abs = (integer < 0) ? (integer * -1) : integer;
或者,虽然我没有对它进行基准测试,但从零减去而不是乘法可能更快(即 0 - integer
)。
我们没有理由不能借Java's implementation。
function myabs(a) {
return (a <= 0.0) ? 0.0 - a : a;
}
console.log(myabs(-9));
工作原理:
- 如果给定的数字小于或为零
- 用 0 减去数字,结果总是
> 0
- 否则 return 数字(因为它是
> 0
)
检查数字是否小于零!如果是,则将其乘以 -1;
您也可以使用>> (Sign-propagating right shift)
function absVal(integer) {
return (integer ^ (integer >> 31)) - (integer >> 31);;
}
注意:这仅适用于整数
您可以使用 conditional operator and the unary negation operator:
function absVal(integer) {
return integer < 0 ? -integer : integer;
}
如何在不使用的情况下使用math.abs获得数字的绝对值?
这是我目前拥有的:
function absVal(integer) {
var abs = integer * integer;
return abs^2;
}
因为一个数的绝对值是"how far the number is from zero",一个负数可以是"flipped"正数(请原谅我缺乏数学术语=P):
var abs = (integer < 0) ? (integer * -1) : integer;
或者,虽然我没有对它进行基准测试,但从零减去而不是乘法可能更快(即 0 - integer
)。
我们没有理由不能借Java's implementation。
function myabs(a) {
return (a <= 0.0) ? 0.0 - a : a;
}
console.log(myabs(-9));
工作原理:
- 如果给定的数字小于或为零
- 用 0 减去数字,结果总是
> 0
- 用 0 减去数字,结果总是
- 否则 return 数字(因为它是
> 0
)
检查数字是否小于零!如果是,则将其乘以 -1;
您也可以使用>> (Sign-propagating right shift)
function absVal(integer) {
return (integer ^ (integer >> 31)) - (integer >> 31);;
}
注意:这仅适用于整数
您可以使用 conditional operator and the unary negation operator:
function absVal(integer) {
return integer < 0 ? -integer : integer;
}