Как получить абсолютное значение целого числа без использования 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, результатом которого всегда будет
- иначе верните номер (потому что это
> 0
)