Zum Inhalt wechseln

Als Gast hast du nur eingeschränkten Zugriff!


Anmelden 

Benutzerkonto erstellen
Du bist nicht angemeldet und hast somit nur einen sehr eingeschränkten Zugriff auf die Features unserer Community.
Um vollen Zugriff zu erlangen musst du dir einen Account erstellen. Der Vorgang sollte nicht länger als 1 Minute dauern.
  • Antworte auf Themen oder erstelle deine eigenen.
  • Schalte dir alle Downloads mit Highspeed & ohne Wartezeit frei.
  • Erhalte Zugriff auf alle Bereiche und entdecke interessante Inhalte.
  • Tausche dich mich anderen Usern in der Shoutbox oder via PN aus.
 

   

Foto

Java-While Schleifen Problem?

- - - - -

  • Bitte melde dich an um zu Antworten
2 Antworten in diesem Thema

#1
ref0rm

ref0rm

    Lamer

  • Banned
  • PIPPIPPIP
  • Likes
    2
  • 18 Beiträge
  • 1 Bedankt

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?

Please Login HERE or Register HERE to see this link!

 

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 -->

Please Login HERE or Register HERE to see this link!

 

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 Februar 2016 - 19:31 Uhr.


#2
Cyber Tjak

Cyber Tjak

    Tjak <3

  • Premium Member
  • Likes
    77
  • 55 Beiträge
  • 64 Bedankt
  • 578980365
  • verifiziert
  • Android [root], iPhone
  • Windows

Hier eine kleine Erklaerung zu dem Rundungsfehler:

Please Login HERE or Register HERE to see this link!

 

Was du vllt. machen koenntest ist eine Rundung oder ein anderer Datentyp (int/BigDecimal).

double d = 0.0;
while(d != 1.0) 
{
   d += 0.1;
   d = (double)Math.round(d * 10d) / 10d;
   System.out.println(d);
}

Bearbeitet von Cyber Tjak, 17 Februar 2016 - 20:56 Uhr.

  • ref0rm gefällt das

Eingefügtes Bild

Ich bin der Stoff aus dem die Traeume sind.


#3
ref0rm

ref0rm

    Lamer

  • Banned
  • PIPPIPPIP
  • Likes
    2
  • 18 Beiträge
  • 1 Bedankt

 

Hier eine kleine Erklaerung zu dem Rundungsfehler:

Please Login HERE or Register HERE to see this link!

 

Was du vllt. machen koenntest ist eine Rundung oder ein anderer Datentyp (int/BigDecimal).

double d = 0.0;
while(d != 1.0) 
{
   d += 0.1;
   d = (double)Math.round(d * 10d) / 10d;
   System.out.println(d);
}

 

Aha!

Also kein Denkfehler meinerseits.

Das ist ein Binärproblem ^^

Witzig. Na dann bedanke ich mich für die flotte Antwort!





  Thema Forum Themenstarter Statistik Letzter Beitrag

Besucher die dieses Thema lesen: 1

Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0

Die besten Hacking Tools zum downloaden : Released, Leaked, Cracked. Größte deutschsprachige Hacker Sammlung.