Warum hab ich so viele kommastellen bei double?

4 Antworten

Die Dezimalzahlen 0,06 und 0,1 können im Hauptspeicher nicht exakt dargestellt werden. Bei der Umrechnung in eine Binärdarstellung entwickelt sich nach dem Komma ein periodischer Anteil, der aufgrund der endlichen Genauigkeit gerundet wird.

Das kann man hier mal ausprobieren:

https://www.matheretter.de/rechner/dezimalbinar

In Schleifen bitte niemals Gleitpunkttypen als Zählvariablen nutzen!

Es ist dann nämlich oft nicht genau definiert, wie oft die Schleife tatsächlch durchlaufen werden wird.

In Schleifen gilt: Grundsätzlich immer und ausschließlich nur Ganzzahltypen für Laufvariablen nutzen.

Woher ich das weiß:Berufserfahrung

Gleitkommazahlen sind nunmal nicht 100% genau. Sondern können um ein paar Trillionstel Abweichen. (Du kannst ja nicht mit 64 1en und 0en mehrere Trilliarden verschiedene Zahlen darstellen.) Und dann kommt nunmal sowas raus, bei den Ungenauigkeiten.

Um es zu beheben: Runden.

  • Nimm die Zahl mal 100000000
  • Wandle sie in einen Int um
  • Teile sie wieder durch 100000000 und speichere das Ergebnis als Double.
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
hat das was mit den gleitkommastellen zu tun?

Exakt. Zum Thema Gleitkommadarstellung gibt es unzählige Erklärungen im Internet (inklusive Youtube-Videos!), ich glaube nicht dass man sie hier wiederholen muss.