0

je dois effectuer des opérations arithmétiques avec un grand nombre de JS, dans ce cas particulier, il est:JavaScript solution de débordement d'entier

(1827116622/6) * 251772294 

Le résultat attendu est 76669557221078478 mais je reçois 76669557221078460 à cause de débordement d'entier.

L'environnement n'autorise pas l'inclusion de bibliothèques. Y a-t-il une solution de contournement pour gérer des calculs comme celui-ci?


Pourquoi je le fais: je suis en train de trouver le moins multiplicateur commun pour ces chiffres à l'aide de la formule suivante:

LCM (,) · GCD (,) = · où LCM est moins commun Le multiplicateur et GCD est le plus grand diviseur commun. Mes calculs sont (a/gcd) * b.

+3

Utilisez une grande bibliothèque d'entiers. Google "Javascript big integer" – Barmar

+0

Il y a un problème, je l'utilise dans un environnement qui ne permet pas d'inclure des librairies. Mise à jour ma question pour clarifier cela –

+0

Vous devez utiliser [arithmétique arbitraire-précision] (https://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic), il y a quelques bonnes petites bibliothèques qui sont bien testées, [big .js] (https://github.com/MikeMcl/big.js/) conviendrait à vos calculs par son apparence. Impossible d'inclure la bibliothèque, puis regardez le code et prenez ce dont vous avez besoin (/ et *). – Xotic750

Répondre

0

Les nombres en JavaScript sont représentés par 64 bits double, qui vous donne une partie entière de 53 bits, si vous allez au-dessus de 53 bits, vos nombres deviennent des doubles, donc vous obtenez arrondi.

Si vous travaillez avec des entiers supérieurs à 53 bits, vous avez besoin d'une solution personnalisée comme les autres ont été écrites dans les commentaires.