kann mir jemand netterweise erklären, warum es in der Lösung zu Selbsttestaufgabe 9.2-2 heißt:
[FONT=courier new]2f[/FONT] ist vom Typ [FONT=courier new]float[/FONT]
...
[FONT=courier new]41D[/FONT] ist vom Typ [FONT=courier new]double[/FONT]
[FONT=courier new]6d[/FONT] ist vom Typ [FONT=courier new]double[/FONT]
Laut Definition auf S. 80 müssten die unteren beiden doch auch vom Typ [FONT=courier new]float[/FONT] sein.
Dort heißt es nämlich: "Gleitkommazahlen sind vom Typ [FONT=courier new]double[/FONT], falls kein Buchstabe (d, D, f, F) am Ende des Literals angegeben ist."
Dankeschön,
Manuel
Comments
J L A
Contributions on this page: 1
View profileJep, 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? ^^
neon-golden
Contributions on this page: 2
View profileDanke für die Super-Erklärung, J L A!