while-Schleife läuft weiter trotz 'false' !



  • #include <iostream>
    using namespace std;
    
    double Biggest1;
    double Volumen = 0.000;
    double Hoehe = 0.000;
    double Breite = 10.000;
    double Laenge = 15.000;
    double BHoehe = 0.000;
    double BLaenge = 0.000;
    double BBreite = 0.000;
    int i;
    
    int main()
    {
    	while(Breite >= 0)
    	{
    		cout << "Rechnung" << i << " " << Breite << '\n';/*Diese Zeile ignorieren!!!
    Ich habe sie nur eingebaut,um den Programmablauf zu überwachen. */
    		Hoehe += 0.001;
    		Breite -= 0.002;
    		Laenge -= 0.002;
    		Volumen = Hoehe*Breite*Laenge;
    		if(Volumen > Biggest1)
    		{
    			Biggest1 = Volumen;
    			BHoehe = Hoehe;
    			BLaenge = Laenge;
    			BBreite = Breite;
    		}
    		i++;
    	}
    
    	cout << "Volumen:" << Biggest1 << '\n';
    	cout << "Laenge: " << BLaenge << '\n';
    	cout << "Breite: " << BBreite << '\n';
    	cout << "Hoehe : " << BHoehe << '\n';
    
    	return 0;
    }
    

    Wenn ich statt

    while(Breite >= 0)
    

    jetzt

    while(Breite != 0)
    

    dann produziere ich eine Endlosschleife,obwohl nach der 4999. Berechnung die Bedingung nicht erfüllt ist,da Breite = 0.002 - 0.002 = 0 ist.
    Warum läuft die Schleife aber trotzdem weiter?



  • '>=' bedeutet aber auch true, wenn Breite gleich 0 ist. Damit macht die Schleife schon das Richtige.



  • Ups, falsch gelesen. Schau dir mal den Thread an, der erklärt, warum das Rechnen mit 0.1 und 0.2 nicht so ohne ist:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-158376.html



  • Alles klar!
    Vielen dank.


Anmelden zum Antworten