For schleife inkrementieren



  • Hallo an alle,

    ich habe eine Hausaufgabe auf in Programmieren und ich komme bei einem Teilproblem nicht weiter.

    Ich habe z.B. folgenden Code:

    #include<stdio.h>
    int main(int argc, char* argv[])
    {
    float x=1, dx;
     for(dx=0;dx<=x;dx=dx+0.1)
    {
         printf("x:%f | dx:%f\n", x, dx);
    }
    
    getchar();
    
    }
    

    Ich habe also x=1 und möchte das dx von 0 bis 1 in 0.1 schritten läuft jedoch geht es nicht. Wenn ich es ausführe ist das letzte dx 0.9

    Ich hoffe Ihr könnt mir helfen, danke!



  • #include<stdio.h>
    
    int main(int argc, char* argv[])
    {
        float x = 1.0f, dx;
    
        for(dx = 0.0f; dx <= 10*x; dx += 1.0f)
        {
            printf("x:%f | dx:%f\n", x, dx/10.0f);
        }
    
        getchar();
    }
    

    :xmas2:



  • floaty schrieb:

    #include<stdio.h>
    
    int main(int argc, char* argv[])
    {
        float x = 1.0f, dx;
    
        for(dx = 0.0f; dx <= 10*x; dx += 1.0f)
        {
            printf("x:%f | dx:%f\n", x, dx/10.0f);
        }
    
        getchar();
    }
    

    :xmas2:

    Danke für deinen Beitrag, das klappt, aber warum?

    Warum muss ich das ganze von 0 nach 10 hochzählen. Wenn das klappt sollte es ja auch mit 0,1 schritten gehen oder?



  • Fließkommazahlen sind zum Zählen halbwegs ungeeignet, da nur näherungsweise darstellbar.


Anmelden zum Antworten