2014-10-28 7 views
14

Utilizzando Node.js, sto valutando l'espressione:Perché 0 in meno di Number.MIN_VALUE in JavaScript?

0 < Number.MIN_VALUE 

Con mia grande sorpresa, questa restituisce true. Perché? E: come posso ottenere il numero più piccolo disponibile per il quale il confronto funziona come previsto?

+2

'Number.MIN_SAFE_INTEGER' –

+0

@Vohuman: ma non è maggiore di zero rispetto a tutti i numeri negativi? – dandavis

+0

'Number.MIN_SAFE_INTEGER' è' undefined' in Node.js 0.10.x. –

risposta

24

Number.MIN_VALUE è 5e-324, ovvero il numero positivo più piccolo che può essere rappresentato all'interno della precisione del galleggiante, cioè è il più vicino possibile a zero. Definisce la migliore risoluzione che i float ti danno.

Ora il valore complessivo minimo è Number.NEGATIVE_INFINITY sebbene non sia realmente numerico in senso stretto.

+1

Grazie per aver spiegato il comportamento * e * sottolineando un'alternativa valida :-) –

+0

Non posso credere che in realtà ho dovuto cercare questo perché il mio codice era sbagliato. Giuro, javascript, a volte ... – Felipe

1

Dal Number.MIN_VALUE = 5e-324 = 5 x 10^-324 ed è maggiore rispetto a 0 (un po 'maggiore).
Ulteriori informazioni here.

+0

'Number.MIN_SAFE_INTEGER' è' undefined' in Node.js 0.10.x. –

+0

ho appena aggiornato la mia risposta .. –

1

Number.MIN_VALUE è equivalente a 5e-324, che è maggiore di 0.

0

Uso -Number.MAX_VALUE invece di Number.MIN_VALUE per confrontare:

0 > -Number.MAX_VALUE rendimenti true.