2010-09-12 18 views
6

In JavaScript È valido per terminare un intero letterale numerico con un punto, in questo modo ...Perché un valore letterale intero è seguito da un punto un valore letterale numerico valido in JavaScript?

x = 5.; 

Qual è il punto di avere questa notazione? C'è qualche ragione per mettere il punto alla fine, e se no, perché è quella notazione consentita in primo luogo?

Aggiornamento: Ok ragazzi, visto che citate float e interi ... Stiamo parlando di JavaScript qui. C'è solo un tipo di numero in JavaScript che è IEEE-754.

5 e 5. hanno lo stesso valore, non c'è differenza tra questi due valori.

+0

La cosa più interessante per me è che javascript consente '05' e' 5.' ma non '05'. – user113716

+2

Questo perché il prefisso '0' lo rende un numero ottale, come esprimeresti un float ottale? ;) –

+0

@Ivo - Ah, davvero sì. '09' funziona. Grazie! : o) – user113716

risposta

2

si ha bisogno il punto decimale se si chiama un metodosu un numero intero:

5.toFixed(n) // throws an error 

5..toFixed(n) // returns the string '5.' followed by n zeroes 

Se questo non guardare a destra, (5).toFixed(n) o 5.0.toFixed(n), funzionerà, anche.

-1

E se non fosse un numero intero, ma un letterale in virgola mobile?

1

Questo è un numero in virgola mobile. A differenza di qualsiasi altra lingua che abbia mai incontrato, tutti i numeri in Javascript sono in realtà numeri mobili a 64 bit. Tecnicamente, non ci sono numeri interi nativi in ​​Javascript. Vedi The Complete Javascript Number Reference per la brutta storia completa.

+0

Il downvoter dovrebbe fare commenti? – Asaph

+0

Sicuramente (mi spiace di non averlo notato prima): * Non penso che tu stia rispondendo alla domanda dell'OP (cioè sull'analisi e le annotazioni, non sulla dimensione del numero) * I numeri di Javascript sono considerati affidabili fino a un limite, che significa che non è necessario trattarli come normali punti in virgola mobile (ovvero puoi fare 10.0/2 == 5, che non dovresti con i normali punti mobili) – Eric

2

La risposta corretta in questo caso è che non fa assolutamente alcuna differenza.

Ogni numero in JavaScript è già un numero a virgola mobile a 64 bit.

Il ". syntax" è utile solo nei casi in cui è possibile ommit la parte fissa, perché è 0:

.2 // Will end up as 0.2 
-.5 // Will end up as -0.5 

Nel complesso si tratta solo di salvare un byte, ma rende il codice meno leggibile, allo stesso tempo .

+0

Avrebbe senso che i valori non interi (valori con frazioni decimali) hanno il punto (ovviamente) e valori interi no. quindi o è solo un numero intero come 5 o è un numero reale come 5.01 ... ma perché è permesso? Se il punto in questo caso non fa la differenza, questa notazione è inutile. Perché dovrebbero abilitare questa notazione allora? –

4

Immagino sia solo la compatibilità con altre lingue simili a C in cui il punto è importante.

+0

Chiamerei quell'eredità ... Ma sì, probabilmente è questa la ragione. Immagino che il creatore di JavaScript abbia appena copiato la notazione da C, ma in seguito ha deciso di definire un solo tipo di numero (e quindi non ha pensato di rivisitare la notazione). –

Problemi correlati