Boucle infini

Résolu
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;
}
Configuration: Linux
Firefox 3.0.3

4 réponses

  1. Contributeur
    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
    1. ça l'air drôle , ça doit être l'erreur sur la mesure
      à la place != met < ou <= , enfin tu comprend
      1. Contributeur
        bonjour,
        Mon C est loin, mais ça serait pas plutôt..
        i=i+0,1
        A+
        1. Contributeur
          i+=0.1 signifie i=i+0.1...
        2. Contributeur
          @fiddyHum.. oui, comme j'ai dit, c'est loin tout ça.
          A+