zwei float zahlen vergeleichen
-
Hi!
void main() { double x = 1; double y = 0.1; while(true) { double z = 0.1; y += z; if(x == y) {cout<<"geht"; break; } } }Eigentlich sollte hier die Bedingung erfüllt sein, wenn y 1 erreicht hat, tut es aber nicht.
Das Interessante ist, wenn ich y einen Startwert von 0.9 gebe, gehts.
Warum ist das so?
Ich verwende überhaupt VC++.Vielen Dank im Vorraus1
-
rundungsfehler.
1.0/3
+
1.0/3
+
1.0/3
!=
1
denn
0.3333
+
0.3333
+
0.33330.9999
oder so ähnlich.nur sind die double-zahlen nicht dezimal und 4-stellig sondern binär und vielstellig. aber es ist das gleiche problem.
if(fabs(x-y)<0.00001)
könnte man als lösung nehmen.
-
Danke!