2009-07-06 5 views
8

Pour une application Web, je veux être en mesure de gérer des nombres allant jusqu'à 64 bits. Lors des tests, j'ai trouvé que javascript (ou le navigateur dans son ensemble) semble gérer jusqu'à 17 chiffres. Un nombre de 64 bits a un maximum de 20 chiffres, mais après que le javascript a traité le nombre, les 3 chiffres les moins significatifs sont arrondis et mis à 0 .... Des idées d'où cela vient-il? Plus important encore, une idée de comment contourner cela?Comment gérer des nombres supérieurs à 17 chiffres dans Firefox/IE7?

Répondre

5

En Javascript, tous les chiffres sont IEEE double precision nombres à virgule flottante, ce qui signifie que vous avez seulement environ 16 chiffres de précision; le reste des 64 bits est réservé à l'exposant. Comme le note Fabien, vous aurez besoin de quelques astuces pour obtenir plus de précision si vous avez besoin de tous les 64 bits.

5

Je pense que vous devez les traiter comme des chaînes si vous avez atteint la limite Javascript (see here)

0

Vous pouvez essayer de les diviser en deux nombres ou plus (dans une classe peut-être), mais vous aurez peut-être besoin de fonctions d'assistance arithmétique pour les utiliser.

Vive

2

Comme d'autres notent, JS met en œuvre des doubles, vous aurez donc chercher ailleurs pour gérer plus grand nombre. BigInt est une bibliothèque pour les mathématiques de précision arbitraires pour les nombres entiers.

Questions connexes