Boucle infini

Résolu/Fermé
c1117 - 11 déc. 2008 à 12:03
 c1117 - 11 déc. 2008 à 13:04
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
11 déc. 2008 à 12:12
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 254 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 6 décembre 2021 29
11 déc. 2008 à 12:14
ç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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
11 déc. 2008 à 12:15
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
11 déc. 2008 à 12:17
i+=0.1 signifie i=i+0.1...
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
11 déc. 2008 à 12:25
Hum.. oui, comme j'ai dit, c'est loin tout ça.
A+
0
merci pour la reponse ;-)
0