Bonjour,

Voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
#include<stdio.h>
#include<math.h>
 
int main()
{
   float n,d;
   int e,i;
 
   printf("Nombre=");
   scanf("%f",&n);
   d=n/1000.0;
   printf("Nbr divisé=%f\n",d);
 
   for(i=0;i<3;i++)
   {
      d=d*10.0;
      printf("d=d*10=%f\n",d);
      e=(int)d;
      printf("e=(int)d=%d\n",e);
      d=d-e;
      printf("d=d-e=%f\n",d);
   }
 
   return 0;
}
Si je renseigne le nombre 197 par exemple, voici le résultat:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
Nombre=197
Nbr divisé=0.197000
d=d*10=1.970000
e=(int)d=1
d=d-e=0.970000
d=d*10=9.700001
e=(int)d=9
d=d-e=0.700001
d=d*10=7.000008
e=(int)d=7
d=d-e=0.000008
Tout se passe bien jusqu'à la 2e multiplication par 10, j'obtiens 9.700001. A la 3e, ça s'empire :-/
Est-ce que le problème vient du fait que j'assigne la partie entière à "e"?

Bonne journée
Ben