Calcul en C complètement faux
Fermé
filou156
-
13 déc. 2009 à 01:44
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 13 déc. 2009 à 04:12
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 13 déc. 2009 à 04:12
A voir également:
- Calcul en C complètement faux
- Calcul moyenne excel - Guide
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Logiciel calcul surface terrain gratuit - Télécharger - Outils professionnels
- Calcul km marche à pied gratuit - Télécharger - Sport
6 réponses
Bonsoir, quelle est la valeur erronée obtenue ? Attention car le nombre en question dépasse 64 bits, la taille probable de l'int. (en fait , cela dépend de la machine, vérifier cela par printf("La taille d'un int sur cette machine est de %d octets\n",sizeof(int));). Il est donc probable que l'instruction "nbr1= ..." entraine un cast implicite, le compilateur n'affiche-t-il pas un warning ?
Par ailleurs, la division entière par 24 donne
1810016327413571629038577685962
et non
181001632741357162903857768596243
Cordialement,
Par ailleurs, la division entière par 24 donne
1810016327413571629038577685962
et non
181001632741357162903857768596243
Cordialement,
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
13 déc. 2009 à 02:14
13 déc. 2009 à 02:14
Pareil !
Ton nombre est trop grand, il dépasse de la culotte si vous me passez l'expression. Faut utiliser un type plus gros, genre long, ou te faire un type perso.
Ton nombre est trop grand, il dépasse de la culotte si vous me passez l'expression. Faut utiliser un type plus gros, genre long, ou te faire un type perso.
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
13 déc. 2009 à 03:01
13 déc. 2009 à 03:01
Sur une machine standard 32bits, avec gcc et sous Linux, on a:
- 2 octets pour 'short',
- 4 octets pour 'int' ou 'long',
- 8 octets pour 'long long',
8 octets donnent 2^64 soit environ 10^20 et ton nombre à plus de 20 chiffres, c'est râpé.
Il te reste au moins 2 solutions:
- définir ton type comme le dit Groarh,
- changer de langage, par exemple, pour un entier Python n'a pas de limite.
Bonne réflexion.
- 2 octets pour 'short',
- 4 octets pour 'int' ou 'long',
- 8 octets pour 'long long',
8 octets donnent 2^64 soit environ 10^20 et ton nombre à plus de 20 chiffres, c'est râpé.
Il te reste au moins 2 solutions:
- définir ton type comme le dit Groarh,
- changer de langage, par exemple, pour un entier Python n'a pas de limite.
Bonne réflexion.
ou encore utiliser une bibliothèque mathématiques spécialisée dans les grands nombres.
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
13 déc. 2009 à 04:12
13 déc. 2009 à 04:12
C'est la raison pour laquelle j'ai mis 'au moins' 2 solutions; on ne pense jamais à tout ;-)
Bonne nuit.
Bonne nuit.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question