Как получить абсолютное значение целого числа без использования Math.abs?

Как получить абсолютное значение числа без использования math.abs?

Это то, что я до сих пор:

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

6 ответов

Решение

Вы можете использовать условный оператор и оператор унарного отрицания:

function absVal(integer) {
  return integer < 0 ? -integer : integer;
}

Вы также можете использовать >> (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;
}

Он возводит целое число в квадрат, а затем извлекает квадратный корень. Это избавит от негатива.

Проверьте, что число меньше нуля! Если это тогда, умножьте это на -1;

Нет никаких причин, почему мы не можем заимствовать реализацию Java.

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

    console.log(myabs(-9));

Как это работает:

  • если заданное число меньше или равно нулю
    • вычтите число из 0, результатом которого всегда будет > 0
  • иначе верните номер (потому что это > 0)
Другие вопросы по тегам