[Schleifen] Schleifenproblem

Trabbelmaker

Aktives Mitglied
Hi,
ich habe ein kleines Problem. Und zwar will ich eine Schleife machen, die immer um 0.01 erhöht.
Bei mir kommt aber irgendwie ein ganz komischer Wert raus...
Java:
public class Test {
	public static void main(String args[]){
		double x;
		double ende;
		x = 0.00;
		ende = 1.00;
		
		while(x<ende) {
			x += 0.01;
			System.out.println("Dies ist der " + x + "te Durchgang!");
		}
		System.out.println("Die Schleife wurde beendet.");
	}
}
Das kommt derzeit raus:
Code:
0.01
0.02
0.03
0.04
0.05
0.060000000000000005
0.07
0.08
0.09
0.09999999999999999
0.10999999999999999
0.11999999999999998
0.12999999999999998
0.13999999999999999
0.15
0.16
0.17
0.18000000000000002
0.19000000000000003
0.20000000000000004
0.21000000000000005
0.22000000000000006
0.23000000000000007
0.24000000000000007
0.25000000000000006
0.26000000000000006
0.2700000000000001
0.2800000000000001
0.2900000000000001
0.3000000000000001
0.3100000000000001
0.3200000000000001
0.3300000000000001
0.34000000000000014
0.35000000000000014
0.36000000000000015
0.37000000000000016
0.38000000000000017
0.3900000000000002
0.4000000000000002
0.4100000000000002
0.4200000000000002
0.4300000000000002
0.4400000000000002
0.45000000000000023
0.46000000000000024
0.47000000000000025
0.48000000000000026
0.49000000000000027
0.5000000000000002
0.5100000000000002
0.5200000000000002
0.5300000000000002
0.5400000000000003
0.5500000000000003
0.5600000000000003
0.5700000000000003
0.5800000000000003
0.5900000000000003
0.6000000000000003
0.6100000000000003
0.6200000000000003
0.6300000000000003
0.6400000000000003
0.6500000000000004
0.6600000000000004
0.6700000000000004
0.6800000000000004
0.6900000000000004
0.7000000000000004
0.7100000000000004
0.7200000000000004
0.7300000000000004
0.7400000000000004
0.7500000000000004
0.7600000000000005
0.7700000000000005
0.7800000000000005
0.7900000000000005
0.8000000000000005
0.8100000000000005
0.8200000000000005
0.8300000000000005
0.8400000000000005
0.8500000000000005
0.8600000000000005
0.8700000000000006
0.8800000000000006
0.8900000000000006
0.9000000000000006
0.9100000000000006
0.9200000000000006
0.9300000000000006
0.9400000000000006
0.9500000000000006
0.9600000000000006
0.9700000000000006
0.9800000000000006
0.9900000000000007
1.0000000000000007
Die Schleife wurde beendet.
 
Zuletzt bearbeitet von einem Moderator:
Das ist schon korrekt. 🙂

Der Grund für deine "komischen" Ausgaben sind schlicht und einfach Rundungsfehler welcher hier auftreten, das liegt an der internen Speicherung.
 
Gibt es ja, so auf die schnelle kann ich dir folgendes präsentieren:

Java:
public class Test {
	public static void main(String args[]){
		double x;
		double ende;
		x = 0.00;
		ende = 1.00;
		
		while(x<ende) {
			x += 0.01;
			x = x * 100;
			x = Math.round(x);
			x = x / 100;
			System.out.println("Dies ist der " + x+ "te Durchgang!");
		}
		System.out.println("Die Schleife wurde beendet.");
	}
}

EDIT: (Ausgabe)
Code:
Dies ist der 0.01te Durchgang!
Dies ist der 0.02te Durchgang!
Dies ist der 0.03te Durchgang!
Dies ist der 0.04te Durchgang!
Dies ist der 0.05te Durchgang!
Dies ist der 0.06te Durchgang!
Dies ist der 0.07te Durchgang!
Dies ist der 0.08te Durchgang!
Dies ist der 0.09te Durchgang!
Dies ist der 0.1te Durchgang!
Dies ist der 0.11te Durchgang!
Dies ist der 0.12te Durchgang!
Dies ist der 0.13te Durchgang!
Dies ist der 0.14te Durchgang!
Dies ist der 0.15te Durchgang!
Dies ist der 0.16te Durchgang!
Dies ist der 0.17te Durchgang!
Dies ist der 0.18te Durchgang!
Dies ist der 0.19te Durchgang!
Dies ist der 0.2te Durchgang!
Dies ist der 0.21te Durchgang!
Dies ist der 0.22te Durchgang!
Dies ist der 0.23te Durchgang!
Dies ist der 0.24te Durchgang!
Dies ist der 0.25te Durchgang!
Dies ist der 0.26te Durchgang!
Dies ist der 0.27te Durchgang!
Dies ist der 0.28te Durchgang!
Dies ist der 0.29te Durchgang!
Dies ist der 0.3te Durchgang!
Dies ist der 0.31te Durchgang!
Dies ist der 0.32te Durchgang!
Dies ist der 0.33te Durchgang!
Dies ist der 0.34te Durchgang!
Dies ist der 0.35te Durchgang!
Dies ist der 0.36te Durchgang!
Dies ist der 0.37te Durchgang!
Dies ist der 0.38te Durchgang!
Dies ist der 0.39te Durchgang!
Dies ist der 0.4te Durchgang!
Dies ist der 0.41te Durchgang!
Dies ist der 0.42te Durchgang!
Dies ist der 0.43te Durchgang!
Dies ist der 0.44te Durchgang!
Dies ist der 0.45te Durchgang!
Dies ist der 0.46te Durchgang!
Dies ist der 0.47te Durchgang!
Dies ist der 0.48te Durchgang!
Dies ist der 0.49te Durchgang!
Dies ist der 0.5te Durchgang!
Dies ist der 0.51te Durchgang!
Dies ist der 0.52te Durchgang!
Dies ist der 0.53te Durchgang!
Dies ist der 0.54te Durchgang!
Dies ist der 0.55te Durchgang!
Dies ist der 0.56te Durchgang!
Dies ist der 0.57te Durchgang!
Dies ist der 0.58te Durchgang!
Dies ist der 0.59te Durchgang!
Dies ist der 0.6te Durchgang!
Dies ist der 0.61te Durchgang!
Dies ist der 0.62te Durchgang!
Dies ist der 0.63te Durchgang!
Dies ist der 0.64te Durchgang!
Dies ist der 0.65te Durchgang!
Dies ist der 0.66te Durchgang!
Dies ist der 0.67te Durchgang!
Dies ist der 0.68te Durchgang!
Dies ist der 0.69te Durchgang!
Dies ist der 0.7te Durchgang!
Dies ist der 0.71te Durchgang!
Dies ist der 0.72te Durchgang!
Dies ist der 0.73te Durchgang!
Dies ist der 0.74te Durchgang!
Dies ist der 0.75te Durchgang!
Dies ist der 0.76te Durchgang!
Dies ist der 0.77te Durchgang!
Dies ist der 0.78te Durchgang!
Dies ist der 0.79te Durchgang!
Dies ist der 0.8te Durchgang!
Dies ist der 0.81te Durchgang!
Dies ist der 0.82te Durchgang!
Dies ist der 0.83te Durchgang!
Dies ist der 0.84te Durchgang!
Dies ist der 0.85te Durchgang!
Dies ist der 0.86te Durchgang!
Dies ist der 0.87te Durchgang!
Dies ist der 0.88te Durchgang!
Dies ist der 0.89te Durchgang!
Dies ist der 0.9te Durchgang!
Dies ist der 0.91te Durchgang!
Dies ist der 0.92te Durchgang!
Dies ist der 0.93te Durchgang!
Dies ist der 0.94te Durchgang!
Dies ist der 0.95te Durchgang!
Dies ist der 0.96te Durchgang!
Dies ist der 0.97te Durchgang!
Dies ist der 0.98te Durchgang!
Dies ist der 0.99te Durchgang!
Dies ist der 1.0te Durchgang!
Die Schleife wurde beendet.

Ansonsten evtl. mal BigDecimal genauer anschauen. 🙂 Dabei erfolgt die Berechnung exakt.

Gruß
 
Zuletzt bearbeitet:

Zurück
Oben