J'essaie de réfléchir à la façon dont je procéderais pour faire des calculs sur des nombres extrêmement grands (à l'infini - intergers sans flottants) si la construction du langage est incapable de gérer des nombres supérieurs à une certaine valeur.
Je suis sûr que je ne suis ni le premier ni le dernier à poser cette question, mais les termes de recherche que j'utilise ne me donnent pas d'algorithme pour gérer ces situations. La plupart des suggestions proposent plutôt un changement de langue ou un changement de variable, ou parlent de choses qui semblent non pertinentes pour ma recherche. J'ai donc besoin d'un peu d'orientation.
Je dessinerais un algorithme comme celui-ci:
Déterminez la longueur maximale de la variable entière pour la langue.
Si un nombre est plus de la moitié de la longueur de la longueur maximale de la variable, divisez-le dans un tableau. (donnez une petite salle de jeux)
Ordre des tableaux [0] = les nombres les plus à droite [n-max] = les nombres les plus à gauche
Ex. Num: 29392023 Array [0]: 23, Array [1]: 20, array [2]: 39, array [3]: 29
Puisque j'ai établi la moitié de la longueur de la variable comme point de repère, je peux alors calculer les unités, les dixièmes, les centièmes, etc. Placer via la marque à mi-chemin de sorte que si une longueur maximale variable était de 10 chiffres de 0 à 9999999999, alors je sais que en divisant cela par cinq chiffres, donnez-moi une salle de jeu.
Donc, si j'ajoute ou multiplie, je peux avoir une fonction de vérificateur de variables qui voit que le sixième chiffre (à droite) du tableau [0] est au même endroit que le premier chiffre (à droite) du tableau [1].
La division et la soustraction ont leurs propres problèmes auxquels je n'ai pas encore pensé.
J'aimerais connaître les meilleures implémentations de prise en charge d'un plus grand nombre que le programme.