Parse Float a une limite d'arrondissement? Comment puis-je réparer cela?

J'ai configuré un système qui analyse une chaîne de données compacte dans JSON. J'utilise un numéro de 19 chiffres pour stocker les identifiants. Malheureusement, n'importe quel nombre supérieur à 17 chiffres, parseFloat() ronde les derniers chiffres.

Cela brise toute la chaîne de données. Puis-je réparer cela?

Par exemple, 8246295522085275215 est transformé en 8246295522085276000 . Pourquoi est-ce?

Http://jsfiddle.net/RobertWHurst/mhZ7Q/

JavaScript n'a qu'un seul type numérique, qui est un point flottant à double précision IEEE 754. Cela signifie que vous avez un maximum de 52 bits de précision, soit un peu plus de 15 décimales.

Si vous avez besoin de plus de précision, vous devez utiliser une bibliothèque bignum ou travailler avec des cordes.

Les nombres en JavaScript perdent la précision s'ils sont supérieurs à une certaine valeur.

Selon http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference , les nombres entiers ne sont fiables que jusqu'à 15 chiffres ( 9 * 10^15 pour être exact).

Essayez l'un de ces 1. Utilisez une chaîne 2. Divisez votre numéro en deux et enregistrez les parties plus petites dans un tableau 3. Bibliothèque Bignum 4. Utilisez un nombre plus petit si vous le pouvez