2011-11-02 7 views
8

Configuré un sistema que analiza una cadena de datos compactos en JSON. Estoy usando un número de 19 dígitos para almacenar identificaciones. Desafortunadamente, cualquier número mayor a 17 dígitos, parseFloat() redondea los últimos dígitos.Parse Float tiene un límite de redondeo? ¿Cómo puedo arreglar esto?

Esto rompe toda la cadena de datos. ¿Puedo arreglar esto?

Por ejemplo 8246295522085275215 se convierte en 8246295522085276000. ¿Por qué es esto?

http://jsfiddle.net/RobertWHurst/mhZ7Q/

+0

Usted don No tiene tantos objetos, ¿verdad? Luego use ID de incremento regulares comenzando con '1'. Si desea evitar que las personas puedan recuperar otros objetos cambiando la ID, agregue un argumento adicional que contenga algún valor aleatorio, entonces aún puede usar una ID adecuada (también en su base de datos como clave principal) y cuando un usuario intenta para modificar la URL no tiene suerte ya que no conoce la cadena aleatoria de otros elementos. – ThiefMaster

+1

si esto es una identificación, ¿por qué molestarse en tratarlo como un número? solo mantenlo como una cuerda –

Respuesta

12

JavaScript tiene solo un tipo numérico, que es una precisión doble IEEE 754 floating-point. Eso significa que tiene un máximo de 52 bits de precisión, que es un poco más de 15 decimales.

Si necesita más precisión que eso, debe usar una biblioteca bignum o trabajar con cadenas.

1

probar uno de estos 1. Utilice una cadena 2. Dividir su número en dos y salvar a las partes más pequeñas para una gran variedad biblioteca 3. Bignum 4. Utilice un número menor si se puede

Cuestiones relacionadas