Exercice langage C : while Erreur

Que fait ce programme ?

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
27
28
29
30
31
32
33
34
35
36
37
#include 

#include 

#define debut 100

#define pas 0.01

int main(void)

{

float nombre=debut;

int compte=0,tous_les;

puts("afficher les résultats intermédiaires

tous les ? (333 par exemple) ?");

scanf("%d",&tous_les);

while (fabs(nombre-(debut+(compte*pas)))<pas)

{

nombre+=pas;

if (!(++compte%tous_les))

printf("valeur obtenue %12.8f, au lieu de %6.2f en %d calculs\n",

nombre,(float)(debut+(compte*pas)), compte);

}

printf("erreur de 100%% en %d calculs\n",compte);

Ce programme démontre les erreurs de calcul toujours effectuées sur des nombres réels.
On additione successivement 0.01 (qui n'a pas de représentation finie en binaire) à un réel initialement nul.
On compte le nombre de calculs jusqu'à obtenir une erreur de 100%.
Dans ce cas il faut 16246 calculs.
On peut essayer d'autres pas et d'autres débuts.