2010-08-13 6 views

Répondre

2

entiers 64 bits (long, int64_t, unsigned long, uint64_t) devrait faire l'affaire, ou si vous avez besoin décimaux, double ou long double.

+3

Si vous avez besoin de nombres décimaux, vous n'avez pas de chance en C pur; 'double' et' long double' sont des types à virgule flottante, pas des nombres décimaux. – Joey

+0

Non. J'ai * fait * mention d'entiers 64 bits, qui peuvent contenir bien plus de 12 chiffres même s'ils sont signés! –

+0

que devrais-je utiliser par exemple en les imprimant? "% ld" était pour longtemps aussi loin que je me souvenais? – DesperateCoders

0

Alors que la recherche d'une bibliothèque appelée Bignum que j'ai trouvé ce wiki page

4

Si vous avez un type entier 64 bits, je partirais avec cela, car il vous donne la (18 chiffres complets) plage:

−9,223,372,036,854,775,808 to 
+9,223,372,036,854,775,807 

Pour d'autres tâches (encore plus grands nombres entiers ou massives valeurs à virgule flottante), j'utilise GMP, la bibliothèque multi-précision GNU. C'est la performance est impressionnante.

1

vous pouvez également utiliser "long unsigned long" avec spécificateur de format "llu". Il fonctionne très bien pour un nombre à 12 chiffres en C.

unsigned long long i=600851475143; 
printf("%llu",i); 
Questions connexes