Exercice langage C : while Erreur
Que fait ce programme ?
#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))){
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.