Problème avec les nombres flottants

Résolu
maniqk -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un petit problème avec les nombres flottants, je n'arrive pas à comprendre pourquoi le code suivant ne me fournit pas ce que je veux :

int main(void){
   int a = 10;
   int b = 3;
   float c = a/b;

   printf("c = %f",c);

   return 0;


Dans la console j'obtiens "c = 3.00000".
Pourquoi n'ai-je pas c = 3.33333 ?

Merci d'avance

5 réponses

isrforlife Messages postés 129 Date d'inscription   Statut Membre Dernière intervention   10
 
Utilise des floats à la place des int
0
maniqk
 
J'ai reçu ton post mais je ne le vois pas, tu l'as peut être supprimé, en tout cas merci de ta réponse rapide.

Cependant, là j'ai simplifié mon programme..
En fait je définis mes "int" ci-dessus dans des directives #define en début de fichier, donc je ne déclare pas le type de mes variables...
0
maniqk
 
Ok je vais parler tout seul mais du coup j'ai trouvé... Je laisse la question pour ceux qui se poseraient des questions !

-> Il suffisait d'écrire #define a 10.000000 au lieu de #define a 10 ...
0
isrforlife Messages postés 129 Date d'inscription   Statut Membre Dernière intervention   10
 
Bravo ! :)

Mets en résolue !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Un peu de précision pour comprendre.
int a = 10;
int b = 3;
float c = a/b;

Il s'agit d'une division d'entiers (a et b sont des int). En C, une division d'entier retourne la valeur entière. Donc 3. Peu importe que c soit de type float.

Plusieurs solutions. Par exemple :
1/ Utiliser au moins un float : float a=10; int b=3; float c=a/b;
2/ Convertir en float : int a=10; int b=3; float c=(a+.0f)/b; ainsi a est converti en float (somme d'un float et d'un int).
3/ Cast : int a=10; int b=3; float c=(float)a/b;

Sinon, je te conseille de plutôt utiliser des doubles.
int a=10; int b=3; double c=(double) a/b;
printf("c=%f\n",c);

Google is your friend
0