Probleme en C avec les puissances
Résolu
omaflak
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je code en C depuis peu et j'ai un petit probleme avec les puissance.
Lorsque je demande grand nombre le programme me donne n'importe quoi comme reponse .
Exemple :
pow(5,100)
il me donne une mauvaise reponse. (2147483647)
Merci d'avance
Lorsque je demande grand nombre le programme me donne n'importe quoi comme reponse .
Exemple :
pow(5,100)
il me donne une mauvaise reponse. (2147483647)
Merci d'avance
A voir également:
- Probleme en C avec les puissances
- Puissance en c - Forum C
- Puissance en c++ - Forum C++
- Elever un nombre n à l'exposant p C++ - Forum C++
- Entrée en économiser puissance - Forum Ecran
- Comment faire les puissances sur clavier ✓ - Forum Windows
6 réponses
Bonjour
C'est parce que le résultat est beaucoup trop grand... Tu dois demander le résultat dans un int de 32 bits, ça ne tient pas. Alors il te met à la place le plus grand int qu'il connaît : 2^31-1 = 2147483647
C'est parce que le résultat est beaucoup trop grand... Tu dois demander le résultat dans un int de 32 bits, ça ne tient pas. Alors il te met à la place le plus grand int qu'il connaît : 2^31-1 = 2147483647
En utilisant des nombres flottants tu auras une approximation du genre 7.888609E+69
Remarque, si c'est juste le résultat qui t'intéresse le voici :
double x = pow(5.0, 100.0);Mais si tu veux avoir un calcul exact, il faut se tourner vers des bibliothèques spécialisées de calculs à grands entiers.
Remarque, si c'est juste le résultat qui t'intéresse le voici :
7888609052210118054117285652827862296732064351090230047702789306640625
C'est un nombre à 69 chiffres, tu les veux vraiment tous ?
Déjà, si tu te contentes du résultat en flottant, tu as une bonne idée du nombre.
Sinon, il existe des bibliothèques spécialisées pour les calculs avec un nombre arbitraire de chiffes. Je ne connais pas celles du C mais ça ne doit pas être bien difficile à trouver.
Déjà, si tu te contentes du résultat en flottant, tu as une bonne idée du nombre.
Sinon, il existe des bibliothèques spécialisées pour les calculs avec un nombre arbitraire de chiffes. Je ne connais pas celles du C mais ça ne doit pas être bien difficile à trouver.
Tu ne précises pas si tu travaille en arithmétique entière ou flottante, ni ton OS, ni ton compilateur.
Pour une bibliothèque entière de précision , regarde par exemple
The GNU Multiple Precision Arithmetic Library
Pour les flottants:
The GNU MPFR Library
Pour une bibliothèque entière de précision , regarde par exemple
The GNU Multiple Precision Arithmetic Library
Pour les flottants:
The GNU MPFR Library
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ok Merci a tous, mais oui j'aimerai avoir le resultat exacte et pas que pour ce nombre. Enfet il y a un site qui s'appelle ProjectEuler.net, qui propose des probleme compliquer qui necessite un ordinateur pour les resoudre.
Et dans un des probleme j'ai besoin de faire des grand calcul comme
pow(60, 100) :)
Enfin voila le delire quoi ;)
Et dans un des probleme j'ai besoin de faire des grand calcul comme
pow(60, 100) :)
Enfin voila le delire quoi ;)