Metodi di oggetti matematici Javascript - negativi a zero


90

in Javascript non riesco a trovare un metodo per impostare i negativi a zero?

-90 diventa 0
-45 diventa 0
0 diventa 0
90 diventa 90

C'è qualcosa del genere? Ho appena arrotondato i numeri.

Risposte:


184

Fai qualcosa di simile

value = value < 0 ? 0 : value;

o

if (value < 0) value = 0;

o

value = Math.max(0, value);

2
Quick JSPerf mostra valore = valore <0? 0: valore; è in cima jsperf.com/negatives-to-zero
Skeep

23
Mi piace l' Math.maxuno di più, perché richiede solo riferimento a valueuna volta
Matt Fletcher

61

Suppongo che potresti usare Math.max().

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

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

3
Questa dovrebbe essere la risposta accettata secondo me.
Sto

2
Una cosa da tenere a mente è che sia Math.max(0, NaN)e Math.max(0, undefined)ritornano, NaNquindi potresti voler fare qualcosa in questo modo:Math.max(0, num) || 0
jwerre

8

Se vuoi essere intelligente:

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

Però, Math.max o un operatore condizionale sarebbe molto più comprensibile.
Inoltre, questo ha problemi di precisione per grandi numeri.


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

// or 

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

zero non è né positivo né negativo, la tua funzione dovrebbe essere rinominata in base a questo
Killy



-1

Non credo che una tale funzione esista con l'oggetto Math nativo. Dovresti scrivere uno script per compilare la funzione se devi usarla.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.