Par exemple, j'ai un programme factoriel qui doit enregistrer des nombres entiers vraiment énormes qui peuvent faire plus de 50 chiffres. Le type de données primitif maximal absolu en C++ est unsigned long long int
avec une valeur maximale 18446744073709551615
qui ne comporte que 20 chiffres. Voici le lien vers les limites du C++: http://www.cplusplus.com/reference/climits/
Comment est-ce que je stocke des nombres qui sont plus grands que cela dans une variable quelconque?
Si vous avez déjà une dépendance de boost (ce que beaucoup de gens font de nos jours), vous pouvez utiliser le boost bibliothèque multi-précision . En fait, il a déjà un exemple de programme factoriel qui peut prendre en charge la sortie jusqu'à 128 bits, bien que son extension soit assez triviale.
Vous devrez utiliser une implémentation bigint ou bignum. Il existe des bibliothèques comme celle-ci: http://gmplib.org/
Quelques informations supplémentaires et une liste de bibliothèques: http://en.wikipedia.org/wiki/Bignum
Vous pouvez utiliser un tableau. Vous devez d'abord copier ce tableau de nombres géants, puis utiliser une virgule après 19 chiffres:
unsigned long long int num[]= {
7316717653133062491,9225119674426574742,3553491949349698352,0,312774506326239578,3180169848018694788,
5184385861560789112,9494954595017379583,3195285320880551112,5406987471585238630,5071569329096329522,
7443043557668966489,5044524452316173185,6403098711121722383,1136222989342338030,8135336276614282806,
4444866452387493035,8907296290491560440,7723907138105158593,0,7960866701724271218,8399879790879227492,
1901699720888093776,6572733300105336788,1220235421809751254,5405947522435258490,7711670556013604839,
5864467063244157221,5539753697817977846,1740649551492908625,6932197846862248283,9722413756570560574,
9026140797296865241,4535100474821663704,8440319989000889524,3450658541227588666,8811642717147992444,
2928230863465674813,9191231628245861786,6458359124566529476,5456828489128831426,0,7690042242190226710,
5562632111110937054,4217506941658960408,0,7198403850962455444,3629812309878799272,4428490918884580156,
1660979191338754992,0,0,5240636899125607176,0,6058861164671094050,7754100225698315520,0,0,
5593572972571636269,5618826704282524836,0,0,8232575304207529634,50};
Il existe de nombreuses façons de stocker un très grand nombre qui sont ci-dessous:
Remarque: veuillez ne pas utiliser le tableau pour éviter les problèmes de mémoire.