如何在不使用Math.abs的情况下获取整数的绝对值?

时间:2015-05-15 21:12:33

标签: javascript function integer absolute-value

如何使用math.abs获取数字的绝对值而不使用

这是我到目前为止所做的:

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

5 个答案:

答案 0 :(得分:5)

您可以使用conditional operatorunary 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

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

    console.log(myabs(-9));
&#13;
&#13;
&#13;

这是如何运作的:

  • 如果给定的数字小于或等于零
    • 从0中减去数字,结果将始终为> 0
  • 否则返回该号码(因为它是> 0

答案 4 :(得分:-1)

检查数字是否小于零!如果是多则用-1;