2010-05-10 5 views
15

Trabajo en Javascript solo con números enteros (principalmente agregando números y desplazándolos). Me pregunto qué tan grandes pueden ser sin perder nada.Número de bits en los números de Javascript

Por ejemplo, ¿qué tan grande X puede ser tal que 1 << X representará 2^X?

+2

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

Respuesta

21

Todos los números en JavaScript son en realidad dobles de coma flotante que cumplen con IEEE-754. Éstos tienen una mantisa de 53 bits que debería significar que cualquier valor entero con una magnitud de aproximadamente 9 cuatrillones o menos, más específicamente, 9,007,199,254,740,991, se representará con precisión.

+2

por lo tanto, x es 53 ?? –

+1

@Revanth: ¡Casi! El entero máximo que se puede representar con precisión es '(2^53) -1' o' 9,007,199,254,740,991'. En la práctica, '2^53' se evaluará como' 9,007,199,254,740,992', pero esto no es, en teoría, una representación precisa porque falta 1 bit de precisión, lo que significa que '2^53' es indistinguible de' (2^53) + 1'. – LukeH

4

Todos los números en JavaScript son números de coma flotante de 64 bits (precisión doble).

Here es una descripción del formato y de qué valores pueden y no pueden representarse con él.

+1

por lo tanto x es 64 ?? –

+1

De alguna manera me tomó mucho tiempo entender por qué seguí viendo "53 bits de precisión", pero solo 52 bits de espacio de almacenamiento para el significando. Ese enlace respondió a la pregunta, un valor implícito de 1. – robyoder

Cuestiones relacionadas