unterschied float double
-
hi leute, wollte mal fragen, ob mir jemand vll sagen kann, warum d2 größer ist als d1 und deshalb 1 rauskommt. ich hätte auf 0 getippt, weil eigentlich beiden doch 0.1 zugewiesen wird. Die Musterlösung(s.u.) hilft mir leider auch nicht weiter.
Mfg
code:
float f1, f2; double d1, d2;
f1=d1=0.1; d2=f2=0.1;
printf("%u \n",d2>d1); /* Ausgabe: 1musterlösung:
Ausgabe: 0.1(d) = 0.00011001100...(b), f2 = 0.1 wird als single bei Aufrundung nach oben
größer als die double-Variable d2 = 0.1, folglich d2 > d1.
-
-
Das kommt in das große Buch der Rundungsfehler.
int main() { { float f1, f2; double d1, d2; f1=d1=0.3; d2=f2=0.3; printf("%u \n",d2>d1); /* Ausgabe: erstaunlicherweise 1*/ } { float f1, f2; double d1, d2; f1=d1=0.5; d2=f2=0.5; printf("%u \n",d2==d1); /* Ausgabe: auch 1*/ } { float f1, f2; double d1, d2; f1=d1=0.7; d2=f2=0.7; printf("%u \n",d2<d1); /* Ausgabe: und schon wieder 1*/ } }
Der nächste Compiler oder Prozessor kann natürlich völlig anders rundungsfehlen.
-
jo danke damit waere das mal geklaert...