Методы математических объектов Javascript - отрицательные до нуля

87

в Javascript я не могу найти способ установить отрицательные значения на ноль?

-90 становится 0
-45 становится 0
0 становится 0
90 становится 90

Есть что-нибудь подобное? Я только что округил числа.

FFish
источник

Ответы:

180

Просто сделай что-нибудь вроде

value = value < 0 ? 0 : value;

или

if (value < 0) value = 0;

или

value = Math.max(0, value);
aioobe
источник
2
Quick JSPerf показывает значение = значение <0? 0: значение; наверху jsperf.com/negatives-to-zero
Skeep
21
Мне нравится Math.maxодин больше всего, потому что он требует ссылки valueтолько один раз
Мэтт Флетчер
60

Я полагаю, вы могли бы использовать Math.max().

var num = 90;
num = Math.max(0,num); // 90

var num = -90;
num = Math.max(0,num); // 0
RightSaidFred
источник
3
На мой взгляд, это должен быть принятый ответ. Просто говорю ... :)
ksugiarto
2
Следует иметь в виду, что оба Math.max(0, NaN)и Math.max(0, undefined)возвращаются, NaNпоэтому вы можете сделать что-то в этом роде:Math.max(0, num) || 0
jwerre
7

Если хочешь быть умным:

num = (num + Math.abs(num)) / 2;

Однако Math.maxгораздо понятнее было бы или условный оператор.
Кроме того, это имеет проблемы с точностью для больших чисел.

SLaks
источник
4
Math.positive = function(num) {
  return Math.max(0, num);
}

// or 

Math.positive = function(num) {
  return num < 0 ? 0 : num;
}
Хуан Мендес
источник
ноль не является ни положительным, ни отрицательным, ваша функция должна быть переименована в соответствии с этим
Killy
3

x < 0 ? 0 : x делает свою работу.

Александр К.
источник
-1

Я не верю, что такая функция существует с собственным объектом Math. Вы должны написать сценарий для заполнения функции, если вам нужно ее использовать.

якобангел
источник