Bonjour,
Voici le code:
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
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; }
Tout se passe bien jusqu'à la 2e multiplication par 10, j'obtiens 9.700001. A la 3e, ça s'empire :-/
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
Est-ce que le problème vient du fait que j'assigne la partie entière à "e"?
Bonne journée
Ben
Partager