double wert ; int zehntel = 0; int inkrement = 1; // jede "1" repräsentiert ein Zehntel while ( zehntel <= 100 ) // 100 Zehntel sind 10.0 { wert = zehntel/10.0 ; // vergewissern Sie sich, dass Sie durch ein double 10.0 dividieren System.out.println( "Wert:" + wert ); zehntel = zehntel + inkrement ; } System.out.println( "Fertig");
Sie könnten ein
double oder float
als Schleifenkontrollvariable haben wollen.
Sie würden bei jeder Iteration 0.1 addieren.
Das könnte fast funktionieren,
aber führt zu Fehlern.
Der Wert 0.1 kann binär nicht exakt dargestellt werden.
Eine Schleife, die wiederholt 0.1 zu einer Variablen
addiert wird Fehler akkumulieren.
Nur zum Spaß, hier ist ein Programmfragment, das genau das tut. Geben Sie verschiedene Grenzwerte ein und sehen Sie wie groß der Fehler dabei ist:
// der Anwender (Sie) gibt einen Grenzwert ein
float inkrement = 0.1 ;
float wert = 0.0 ;
while ( wert < limit )
{
wert = wert + inkrement;
}
System.out.println( "Der Wert war " + wert + " als die Schleife beendet wurde");