Java Float-Variable verringern

mcburn83

Lieutenant
Registriert
Jan. 2006
Beiträge
524
Hi, ich bearbeite grad nen Übungszettel hier und dort ist eine Frage:

Mit dem folgenden Java-Programmausschnitt soll die float-Variable a solange um 0.1 verringert
werden, bis a = 0.0 gilt. Mathematisch gesehen wäre das nach 10 Durchläufen erreicht.
float a = 1.0f;
while (a != 0.0) {
a = a - 0.1f;
}
Erläutern Sie warum das Programm so nicht funktioniert und welcher Effekt sich stattdessen
einstellt.

Ich würd sagen, das es daher kommt das es Rundungsfehler gibt und stattdessen kommen krumme Zahlen bei rum, is das richtig oder hab ich das Prinzip total falsch verstanden?
 
Hi.
Eine float Variable wird in 32bit mit vorzeichen, exponent und mantisse gespeichert.
1.0 ist problemlos darstellbar, aber 0.1 nicht, wiederholt sich periodisch im Bitmuster (wenn man über die 32bit hinaus geht -> endlos).
Auf Gleichheit prüfen, führt dann zu Endlosschleifen.

Such mal nach IEEE 754, gibt auch irgendwo eine Seite zum umrechnen.

Grüße Eric
 
Zuletzt bearbeitet:
Und ja, du hast es richtig verstanden.
 
Zurück
Oben