2009-07-06 7 views
8

Para una aplicación web, quiero poder manejar números de hasta 64 bits de tamaño. Durante las pruebas, descubrí que javascript (o el navegador en su conjunto) parece manejar hasta 17 dígitos. Un número de 64 bits tiene un máximo de 20 dígitos, pero después de que javascript haya manejado el número, los 3 dígitos menos significativos se redondean y se establecen en 0 ... ¿Alguna idea de dónde viene esto? Más importante aún, ¿alguna idea de cómo evitarlo?¿Cómo puedo manejar números mayores de 17 dígitos en Firefox/IE7?

Respuesta

5

en JavaScript, todos los números son IEEE double precision números de punto flotante, lo que significa que sólo tiene alrededor de 16 dígitos de precisión; el resto de los 64 bits están reservados para el exponente. Como señala Fabien, tendrás que trabajar algunos trucos para obtener más precisión si necesitas los 64 bits.

5

creo que es necesario tratarlos como cadenas si se ha alcanzado el límite Javascript (see here)

0

Puede tratar de dividirlos en dos o más números (en una clase tal vez), pero es posible que necesite algunas funciones auxiliares aritméticas para trabajar con ellos.

Saludos

2

Como otros nota, JS implementa dobles, así que tendrá que buscar otro lugar para manejar los números más grandes. BigInt es una biblioteca para matemáticas de precisión arbitary para enteros.

Cuestiones relacionadas