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.