Guten Abend werte Community,
Ich habe gerade eine absolut kinderleichte While Schleife in Java gebastelt und stoße hier an meine Grenzen.
Eventuell stehe ich auf dem Schlauch, aber ich komme nicht weiter.
Diese sieht wie folgt aus:
double d = 0.0; while(d != 1.0) { d += 0.1; System.out.println(d); }
Was soll diese eigentlich machen?
Tja, von 0 bis 1 zählen in 0.1er Schritten.
Doch was kommt raus?
Ich habe die Schleife in 2 Java Compilern getestet.
Selbes Resultat.
Es ergibt sich eine Endlosschleife.
Vermutlich weil es eben nie den Wert 1.0 erreicht sondern knapp darunter bzw darüber liegt?
Baue ich die exakte Schleife in C# nach kommt der Fehler etwas verspätet -->
Witzigerweise endet die Schleife auch hier nicht bei 1.0, obwohl dieser Wert richtig erreicht wird....
Übersehe ich etwas?
Freue mich über jeden Tipp.
~ref0rm
EDIT:
Mit ganzen Zahlen funktioniert es.
Dürfte irgendwie mit den Nachkommastellen zutun haben.
EDIT2:
Wenn ich in C# Debugge, kommen eigentlich die selben Zahlen wie in Java raus.
Allerdings dürfte .Net hier selbst runden auf die "schönen" Zahlen. Allerdings auch nur die ersten paar.
Wtf.
Bearbeitet von ref0rm, 17 February 2016 - 19:31 Uhr.