Fließkommazahlen: Das double-Keyword

Mit dem Laden des Videos akzeptierst du die Datenschutzerklärung von YouTube. Wenn du die Menge an Daten reduzieren möchtest, die YouTube von dir sammelt, solltest du dich vorher aus deinem YouTube-Account ausloggen, das Speichern von Cookies für das Google-Ads-Programm deaktivieren und/oder Cookies im Browser blockieren.
YouTube immer automatisch ladenInhaltsverzeichnis
Als Text lesen
Du kennst bereits die Basistypen int
und boolean
. In boolean
-Variablen können lediglich Wahrheitswerte gespeichert werden, und in int
-Variablen Ganzzahlen. Um mit Fließkommazahlen hantieren zu können, gibt es das double
-Keyword:
Hierbei werden alle Stellen nach dem Komma durch einen Punkt getrennt.
double
s können ähnlich wie int
-Werte miteinander verrechnet werden, mit Ausnahme der Division, bei der hier nicht mehr abgerundet wird:
Achtung! Vergleiche niemals, niemals, niemals double
-Werte mit ==
bzw. !=
. Den Grund hierfür liefert folgendes Beispiel:
Die Berechnung 1.6 + 1.8
sollte eigentlich 3.4
ergeben. Allerdings ist das tatsächliche Ergebnis 3.4000000000000004
. Ein Vergleich mit ==
würde hier false
liefern!
Das liegt an der Art und Weise, wie Fließkommazahlen in Binärdarstellung gespeichert werden. Für dich ist die genaue Funktionsweise irrelevant, aber merke dir stets dass Fließkommazahlen fehlerbehaftet sind!
Es ist besser, double
s mit Fehlertoleranz zu vergleichen:
Im Gegensatz zu int
liefert eine Division durch 0.0
bei double
s keinen Fehler, sondern abhängig vom Dividenden sonderbare Ergebnisse:
1.0 / 0.0
ergibtInfinity
, weil der Dividend1.0
positiv ist-1.0 / 0.0
ergibt-Infinity
, weil der Dividend-1.0
negativ ist0.0 / 0.0
ergibtNaN
(Not a Number), weil der Dividend0.0
ist
Infinity
, -Infinity
, und NaN
sind zwar mathematisch gesehen keine Zahlen, wurden aber trotzdem als double
-Konstanten definiert. Auch bei anderen Operationen als /
kann es u.A. bei Falscheingaben zu solchen Ergebnissen kommen.
Übersicht Bisherige Basistypen
Basistyp | Art | Beispiele |
---|---|---|
boolean |
Wahrheitswert | false , true |
int |
Ganzzahl | -10 , 0 , 7 , 42 , 9999 |
double |
Fließkommazahl | -1.125 , 0.0 , 3.14159 , Double.NaN , Double.NEGATIVE_INFINITY |
Weil bestimmte mathematische Funktionen und Konstanten sehr häufig benötigt werden, gibt es diese bereits in der Standard-Java-Bibliothek:
Du kennst doch sicher die Mitternachtsformel aus dem Mathe-Unterricht:
Falls das jetzt komplettes Neuland für dich ist: Kein Problem! Es ist für diese Aufgabe nicht wichtig zu verstehen, was passiert. Du sollst lediglich die obige Formel in Programmcode umwandeln.
Das ± bedeutet, dass es zwei Ergebnisse gibt, eines für -b + ...
, und eines für -b - ...
. Gib beide Lösungen wie folgt aus: Die beiden Nullstellen der Parabel lauten FIRST_SOLUTION und SECOND_SOLUTION.

Mit dem Laden des Online Editors akzeptierst du die Datenschutzerklärung von JDoodle, einem Produkt der Nutpan pty Ltd (Australien). JDoodle verwendet die Tools reCAPTCHA und Google Analytics, wodurch Daten an Google übertragen werden können. Ich habe leider keinen Einfluss auf diesen Prozess. Du kannst Google Analytics über ein Browserplugin deaktivieren.
Online Editor immer automatisch ladenDas Ergebnis für das gegebene Beispiel sollten die Nullstellen 1.5
und -2.0
sein.
Was passiert für die Eingaben a = 1.0
, b = 0.5
, c = 3.0
? Modifiziere deinen Code so, dass stattdessen eine Fehlermeldung ausgegeben wird.
Häufige Fehlerquellen
- Klammern vergessen: Punkt vor Strich und so
- Vorzeichenfehler
- b² falsch implementiert: Verwende entweder
b * b
oderMath.pow(b, 2.0)