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: 1

    musterlö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... 👍


Anmelden zum Antworten