Metody obiektu Math Javascript - negatywy do zera

87

w Javascript nie mogę znaleźć metody ustawiania negatywów na zero?

-90 staje się 0
-45 staje się 0
0 staje się 0
90 staje się 90

Czy jest coś takiego? Właśnie zaokrągliłem liczby.

FFish
źródło

Odpowiedzi:

180

Po prostu zrób coś takiego

value = value < 0 ? 0 : value;

lub

if (value < 0) value = 0;

lub

value = Math.max(0, value);
aioobe
źródło
2
Quick JSPerf pokazuje wartość = wartość <0? 0: wartość; jest na górze jsperf.com/negatives-to-zero
Skeep
21
Math.maxNajbardziej podoba mi się ten, ponieważ wymaga tylko valuejednego odwołania
Matt Fletcher,
60

Przypuszczam, że możesz użyć Math.max().

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

var num = -90;
num = Math.max(0,num); // 0
RightSaidFred
źródło
3
Moim zdaniem ta odpowiedź powinna być akceptowana. Tylko mówię ... :)
ksugiarto
2
Jedną rzeczą, o której należy pamiętać, jest to, że obie Math.max(0, NaN)i Math.max(0, undefined)wróć, NaNwięc możesz zrobić coś w ten sposób:Math.max(0, num) || 0
jwerre
7

Jeśli chcesz być sprytny:

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

Jednak Math.maxoperator warunkowy byłby znacznie bardziej zrozumiały.
W przypadku dużych liczb powoduje to również problemy z precyzją.

SLaks
źródło
4
Math.positive = function(num) {
  return Math.max(0, num);
}

// or 

Math.positive = function(num) {
  return num < 0 ? 0 : num;
}
Juan Mendes
źródło
zero nie jest ani dodatnie, ani ujemne, nazwa twojej funkcji powinna zostać zmieniona zgodnie z tym
Killy
3

x < 0 ? 0 : x wykonuje pracę .

Alexandre C.
źródło
-1

Nie wierzę, że taka funkcja istnieje w natywnym obiekcie Math. Powinieneś napisać skrypt, który wypełni funkcję, jeśli chcesz jej użyć.

Jacobangel
źródło