Boucle infini

Résolu
c1117 -  
 c1117 -
Bonjour,
je comprends pas pourquoi sa fait une boucle infini et vous?

int main () {

double r=0.0
for (double i = 0 ; i !=1.0 ; i+=0.1 ) {
r = r+i;
}

return 0;
}

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
C'est normal, en fait la comparaison entre double ou float est délicate car approximée par des binaires en mémoire.
En fait en C, deux doubles sont égaux si leur différence est très faible (0.0001 par exemple).
Dans ton cas, tu peux faire encore plus simple, en mettant i<=1.0 à la place de i!=1.0 dans ta boucle for.
Cdlt
0
ljm972 Messages postés 255 Date d'inscription   Statut Membre Dernière intervention   29
 
ça l'air drôle , ça doit être l'erreur sur la mesure
à la place != met < ou <= , enfin tu comprend
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
bonjour,
Mon C est loin, mais ça serait pas plutôt..
i=i+0,1
A+
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
i+=0.1 signifie i=i+0.1...
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191 > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
Hum.. oui, comme j'ai dit, c'est loin tout ça.
A+
0
c1117
 
merci pour la reponse ;-)
0