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.