3

如何在使用 math.abs 的情况下获得数字的绝对值?

这是我到目前为止所拥有的:

function absVal(integer) {
    var abs = integer * integer;
    return abs^2;
}
4

5 回答 5

8

您可以使用条件运算符一元否定运算符

function absVal(integer) {
  return integer < 0 ? -integer : integer;
}
于 2015-05-15T21:22:55.937 回答
5

你也可以使用>> (Sign-propagating right shift)

function absVal(integer) {
    return (integer ^ (integer >> 31)) - (integer >> 31);;
}

注意:这仅适用于整数

于 2015-05-15T21:17:44.893 回答
2

因为一个数字的绝对值是“这个数字离零有多远”,一个负数可以被“翻转”为正数(如果你原谅我缺乏数学术语=P):

var abs = (integer < 0) ? (integer * -1) : integer;

或者,虽然我没有对其进行基准测试,但从零减去而不是相乘(即)可能更快0 - integer

于 2015-05-15T21:14:49.523 回答
0

检查数字是否小于零!如果是,则将其与 -1 相乘;

于 2015-05-15T21:15:43.197 回答
-1

我们没有理由不能借用Java 的实现

    function myabs(a) {
      return (a <= 0.0) ? 0.0 - a : a;
    }

    console.log(myabs(-9));

这是如何工作的:

  • 如果给定的数字小于或为零
    • 从 0 中减去数字,结果将始终为> 0
  • 否则返回数字(因为它是> 0
于 2015-05-15T21:15:04.517 回答