Как получить абсолютное значение числа без использования math.abs?
Это то, что у меня есть до сих пор:
function absVal(integer) {
var abs = integer * integer;
return abs^2;
}
Как получить абсолютное значение числа без использования math.abs?
Это то, что у меня есть до сих пор:
function absVal(integer) {
var abs = integer * integer;
return abs^2;
}
Вы можете использовать условный оператор и унарный оператор отрицания :
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
).
(integer * -1)
... Я, наверное, должен был написать это полностью = P
- person newfurniturey; 16.05.2015
Проверьте, меньше ли число нуля! Если это так, умножьте его на -1;
Нет причин, по которым мы не можем заимствовать реализация Java.
function myabs(a) {
return (a <= 0.0) ? 0.0 - a : a;
}
console.log(myabs(-9));
Как это работает:
> 0
> 0
)(a <0.0)
лучше. Во-вторых, нет необходимости в вычитании, потому что есть унарный оператор отрицания.
- person Paebbels; 16.05.2015
abs^2
? Я думаю, вы хотели разделить, не так ли? (return abs/2
) - person Alexis Wilke   schedule 11.07.2020