2014-11-22 6 views
5

Durante la sperimentazione con JavaScript. Stavo testando in giro con alcuni frammenti di codice po 'strano, qui ci sono alcuni dei miei risultati (per aiutare a capire come mi sono imbattuto in -0),Perché -0 esiste?

Mentre si fa +[] in console, questo ritorna 0. Non sono sicuro del perché, ma lo è. Quindi, questo implica il positivo di un array è 0 ..

Dopo questo modo, mi sono incuriosito e ho provato la seguente:

console.log(-[]); 

E questo torna -0 ...

Che cosa è il punto di -0? 0 e -0 non hanno alcun valore, quindi il negativo è davvero superfluo ... O è? Forse JavaScript ha uno scopo per -0?

Aggiungendo a quello. Non riesco a trovare un altro modo per riprodurre -0 altro che usare -0 sé, o utilizzando -[] ...


Alcuni altri risultati strani, furthing la mia domanda di -0

(-0) + (-0) = 0 
(-0) - (-0) = -0 
(-0) * (-0) = 0 
(-0)/(-0) = NaN // of course 
+0

'-0 < 0' -> ' false'; '-0 == 0' -> ' true'; '-0 === 0' -> ' true' –

+0

è una cosa legacy, non mi preoccuperei troppo. – dandavis

+0

Hai trovato anche questo: http://stackoverflow.com/questions/7223717/differentiating-0-and-0 – Krease

risposta

3

JavaScript utilizza per rappresentare IEEE 754 standard numeri. Da Wikipedia:

Firmato a zero è pari a zero con un segno associato. Nell'aritmetica ordinaria, -0 = +0 = 0. Tuttavia, nel calcolo, alcune rappresentazioni numeriche consentono l'esistenza di due zeri, spesso indicati da -0 (zero negativo) e +0 (zero positivo). Ciò si verifica in alcune rappresentazioni numeriche firmate per numeri interi e nella maggior parte delle rappresentazioni numeriche in virgola mobile. Il numero 0 è solitamente codificato come +0, ma può essere rappresentato da +0 o -0.

Lo standard IEEE 754 per l'aritmetica in virgola mobile (attualmente utilizzato dalla maggior parte dei computer e linguaggi di programmazione che supportano numeri in virgola mobile) richiede sia +0 che -0. Gli zeri possono essere considerati come una variante della linea di numeri reali estesa in modo tale che 1/-0 = -∞ e 1/+ 0 = + ∞, la divisione per zero è solo indefinita per ± 0/± 0 e ± ∞/± ∞ .

Da questo Post

+0

Perché è presente? A cosa serve -0? – Aravind

+1

come mia madre ha risposto per domande con risposte insignificanti: "è lì per far dire ai bambini che è lì" – dandavis

2

E 'per aiutare a determinare ciò che accade quando si divide da esso.

Se si divide per +0, si ottiene +Infinity. Se dividi per -0, ottieni -Infinity. (Per numeratori diversi da zero, ovviamente).

+0

Sono curioso, perché è presente? A che serve un caso? – Aravind

+0

@Aravind Stai chiedendo a cosa serve distinguere tra infinito positivo e negativo? –

+0

Sto chiedendo il caso d'uso per -0. Dove viene fuori? Come posso usarlo nella pratica? – Aravind