en Javascript (dans le panneau de la console DevTools Chrome et Node.js v0.12.5), que je reçois une réponse incorrecte pour le produit de ces deux grands nombres:Est-il possible de gérer le débordement d'entier sans une bibliothèque externe en JavaScript?
entrée: 41962049 * 1827116622
sortie: 76669557221078480
En C++ et C#, j'obtiens la réponse correcte de 76669557221078478
lors de la conversion de l'expression en un int de 64 bits. Je suppose que c'est un problème de dépassement d'entier, mais je peux certainement me tromper.
Existe-t-il un moyen d'obtenir des produits arithmétiques précis pour les grands nombres en Javascript sans utiliser une bibliothèque externe comme BigInteger? C'est pour une classe en ligne qui n'autorise pas les bibliothèques supplémentaires.
Merci pour votre aide.
EDIT: Merci pour l'explication expliquant que ce n'est pas réellement un débordement d'entier, Patrick Roberts! Très utile.
EDIT 2: jfriend00, Je pense que cette question est différente de celle que vous avez liée à parce que j'essaie de comprendre s'il existe un moyen de contourner les limites de JS sans s'appuyer sur une bibliothèque externe. La réponse que vous avez fournie dans les commentaires a aidé à répondre à ma question, alors merci!
No. autre que d'écrire votre propre capacité de bigint vous-même ou en utilisant une bibliothèque qui le fait déjà, il n'y a pas de capacité intégrée pour cela. Voir [Quelle est la valeur entière la plus élevée de JavaScript qu'un nombre peut atteindre sans perdre en précision?] (Http://stackoverflow.com/questions/307179/what-is-javascripts-highest-integer-value-that-a-number- can-go-to-without-losin). – jfriend00
Btw, http://ideone.com/lyXfdU --- C#, http://ideone.com/F6DZ71 --- C++. – zerkms
Je ne savais pas sur ce site zerkms. Assez chouette! En utilisant long (C#) ou long long (C++), j'obtiens les bons résultats. http://ideone.com/OshLAb - C# http://ideone.com/NMs0L2 - C++ – aman