Warum verhalten sich die forschleifen so?
-
float x
for(x=0.1;x<=2.0;x=x+0.1) --> geht nur bis 1.9?? warum???double x
for(x=0.1;x!=2.0;x=x+0.1) ---> Endlosschleife warum?such Inofs u Erklärungen dazu auch Webpages!
big thx
-
Kommazahlen können binär leider nicht exakt dargestellt werden, deswegen werden nur Näherungswerte verwendet.
-
Shade Of Mine schrieb:
Kommazahlen können binär leider nicht exakt dargestellt werden, deswegen werden nur Näherungswerte verwendet.
Können sie schon (bei endlichen Nachkommastelen) BCD-Format, Fixpunkt.
In C gehts nur nur nicht, dafür haben Fließkommazahlen andere Vorteile
(größerer Wertebereich...).
-
for(x=0.1;x!=2.0;x=x+0.1)
Wo soll x denn deiner Meinung nach enden.
-
bei 2?
-
for(x=0.1;x!=2.0;x=x+0.1)
Die Bedingung der Schleife sollte den == und != OP vermeiden. Insbesondere dann, wenn die Laufvariable vom Typ Gleitkommazahl ist!
-
for(x=0.1;!(abs(x-2.0)<0.01);x=x+0.1)
So sollte es gehen. Am besten nimmt man in Schleifen aber Integer.
-
Downset schrieb:
bei 2?
Na weil:
for(j = 0.1; j != 2.0000000000000004; j = j + 0.1) { printf("%.20f\n", j); sleep(1000); }
die Bedingung erst erfüllt.