2011-02-07 20 views

risposta

88

Basta fare una cosa del genere

value = value < 0 ? 0 : value; 

o

if (value < 0) value = 0; 

o

value = Math.max(0, value); 
+1

rapida JSPerf mostra value = valore <0? 0: valore; è in cima http://jsperf.com/negatives-to-zero – Skeep

+2

Mi piace di più il 'Math.max', perché richiede solo il riferimento' value' una volta –

26

Immagino che si potrebbe usare Math.max().

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

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

Questa dovrebbe essere la risposta accettata secondo me. Solo dicendo ... :) – ksugiarto

2

x < 0 ? 0 : x fa il lavoro.

4

Se vuoi essere intelligente:

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

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

0

Non credo che esista una tale funzione con l'oggetto Math nativo. Dovresti scrivere uno script per compilare la funzione se hai bisogno di usarlo.

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

// or 

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

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