2010-05-10 9 views
15

Lavoro in Javascript con solo numeri interi (principalmente aggiungendo numeri e spostandoli). Mi chiedo quanto possono essere grandi senza perdere alcun bit.Numero di bit nei numeri di Javascript

Ad esempio, quanto grande è lo 1 << X rappresenterà 2^X?

+2

Duplicate: http://stackoverflow.com/questions/307179/what-is-javascripts-max-int-whats-the-highest-integer-value-a-number-can-go-to – Dolph

risposta

21

Tutti i numeri in JavaScript sono in realtà doppi in virgola mobile conformi allo standard IEEE-754. Questi hanno una mantissa a 53 bit che dovrebbe significare che qualsiasi valore intero con una grandezza di circa 9 quadrilioni o meno - più specificamente, 9,007,199,254,740,991 - sarà rappresentato con precisione.

+2

quindi x è 53 ?? –

+1

@Revanth: quasi! Il numero intero massimo che può essere rappresentato con precisione è '(2 ​​^ 53) -1' o' 9,007,199,254,740,991'. In pratica, '2^53' valuterà come' 9,007,199,254,740,992' ma questa non è, in teoria, una rappresentazione accurata perché manca 1 bit di precisione, il che significa che '2^53' non è distinguibile da' (2^53) + 1'. – LukeH

4

Tutti i numeri in JavaScript sono numeri in virgola mobile a 64 bit (doppia precisione).

Here 's una descrizione del formato e quali valori possono e non possono essere rappresentati con esso.

+1

quindi X è 64 ?? –

+1

In qualche modo mi ci è voluto per sempre capire perché continuavo a vedere "53 bit di precisione" ma solo 52 bit di spazio di archiviazione per il significato. Quel link ha risposto alla domanda, un valore implicito di 1. – robyoder

Problemi correlati