KE2, Selbsttestaufgabe 9.2-2

Dr Franke Ghostwriter
kann mir jemand netterweise erklären, warum es in der Lösung zu Selbsttestaufgabe 9.2-2 heißt:

2f ist vom Typ float
...
41D ist vom Typ double
6d ist vom Typ double

Laut Definition auf S. 80 müssten die unteren beiden doch auch vom Typ float sein.

Dort heißt es nämlich: "Gleitkommazahlen sind vom Typ double, falls kein Buchstabe (d, D, f, F) am Ende des Literals angegeben ist."

Dankeschön,
Manuel
 
Jep, aber du hast hier ja so oder so keinen Dezimalpunkt. Würden die beiden Werte ohne D/d initialisiert, wären sie erstmal ein int. Über das D/d hinten dran werden sie halt explizit zu Double-Werten. Das mit "kein Buchstabe am Ende des Literals" bezieht sich ja auf die Fälle, welche so oder so eine Gleitkommazahl sind, in der Aufgabe also 45.45 und .3.

Mich würde interessieren, wie du auf die Idee kommst, dass 2f und 6d beide zu float werden sollten. 🙂 Beide wären eigentlich ein int (ohne den Buchstaben am Literal dran) und werden im Beispiel explizit über den Zusatzbuchstaben mit einem anderen Typ initialisiert.

Kurzes Gegenbeispiel: Stünde da statt 45.45 (welches ja ein Double ist) nun 45.45f, dann wäre es Float. Stünde dort jedoch 45.45d oder 45.45D (sind ja gleichbedeutend), dann wäre es wiederum Double. Die Aussage mit "kein Buchstabe am Ende des Literals" ist nicht einschränkend gemeint - da kann da ohne Probleme d oder D stehen, ohne das Ergebnis zu ändern.

Also: d oder D für double; f oder F für float. Bei double ist der Zusatz dann optional, wenn der Wert von Java so oder so als Gleitkommazahl gewertet würde, sprich eine Zahl mit einem Punkt drin wäre.

Weitergeholfen oder nur verwirrt? ^^
 
Oben