Question

J'ai toujours été curieux: comment puis-je effectuer des opérations arithmétiques sur de très longues décimales - par exemple, calculer pi à la 3000ème décimale (surtout dans un langage impératif)?

Était-ce utile?

La solution

Utilisez un langage ou une bibliothèque prenant en charge les nombres de précision arbitraire ...?

En Python, ints s'auto-promeut automatiquement en tant que longs dont la taille est arbitraire. Vous pouvez utiliser une deuxième valeur pour garder une trace du nombre de décimales à déplacer pour obtenir une sorte de virgule flottante de précision arbitraire.

En Java, vous pouvez utiliser le BigDecimal. La classe, qui représente les "nombres décimaux signés avec une précision arbitraire et immuables".

Je suis sûr que d'autres exemples existent dans d'autres langues.

Autres conseils

Pour les langages qui ne prennent pas en charge les calculs sur bignums, il existe souvent des bibliothèques. Vous pouvez par exemple consulter GMP . La documentation vous indiquera certaines des approches algorithmiques typiques.

Accélérer l’arithmétique de Bignum est difficile, il existe donc des algorithmes assez compliqués ...

Vous devez travailler avec les données au niveau des chiffres (par exemple, calculer chaque chiffre de manière incrémentielle ou déterministe) ou définir de nouvelles structures de données comportant un nombre de bits suffisant pour fournir une précision adéquate.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top