Problème avec les nombres flottants

Résolu
maniqk -  
fiddy Messages postés 441 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

  1. isrforlife Messages postés 144 Statut Membre 10
     
    Utilise des floats à la place des int
    0
  2. 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
  3. 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
  4. isrforlife Messages postés 144 Statut Membre 10
     
    Bravo ! :)

    Mets en résolue !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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