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.

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);

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

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ą.


4
Math.positive = function(num) {
  return Math.max(0, num);
}

// or 

Math.positive = function(num) {
  return num < 0 ? 0 : num;
}

zero nie jest ani dodatnie, ani ujemne, nazwa twojej funkcji powinna zostać zmieniona zgodnie z tym
Killy



-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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.