Подтвердить что ты не робот

Получить абсолютное значение числа в Javascript

Я хочу получить абсолютное значение числа в JavaScript. То есть, отбросьте знак. Я знаю математически, я могу это сделать, возводя квадрат в квадрат, но я также знаю, что это ужасно неэффективно.

x = -25
x = x * x 
x = sqrt(x)

// x would now be 25 

Есть ли способ в JavaScript просто отказаться от знака числа, которое более эффективно, чем математический подход?

4b9b3361

Ответ 1

Вы имеете в виду получить абсолютное значение числа? Math.abs функция javascript предназначена именно для этой цели.

var x = -25;
x = Math.abs(x); // x would now be 25 

Вот несколько примеров из документации:

Math.abs('-1');     // 1
Math.abs(-2);       // 2
Math.abs(null);     // 0
Math.abs("string"); // NaN
Math.abs();         // NaN

Ответ 2

Вот быстрый способ получить абсолютное значение числа. Это применимо на каждом языке:

(x ^ (x >> 31)) - (x >> 31);

Ответ 4

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

Сообщение в блоге

Вот реализация, основанная на исходном коде хрома.

function MathAbs(x) {
  x = +x;
  return (x > 0) ? x : 0 - x;
}

Ответ 5

Альтернативное решение

Math.max(x,-x)

let abs = x => Math.max(x,-x);

console.log(abs(24));
console.log(abs(-24));

Ответ 6

Хорошо только для записи, может быть еще один упрощенный метод:

var abs = x => Math.sqrt(x*x)

Ответ 7

Это умножит число на 1 или -1

x * (x/x)