Vertretung der float-Werte in Java
Blick auf die drei Zeilen code unter.
float f = 1;
float g = 1.1;
float h = 1.1f;
Zweite Zeile hat Kompilierungsfehler, während die anderen Linien haben keine Kompilierungsfehler auftreten. Erste Zeile ist in Ordnung, die ohne suffix f und die Dritte Linie ist die Arbeit mit suffix f. Warum ist das so?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Floating-point-Literale in Java ist eine
double
Wert standardmäßig.Können Sie nicht zuordnen
double
Wert auf einefloat
ohne eine explizite einschränkende Konvertierung. Somit haben Sie zwei Optionen:f
oderF
zu bezeichnen, dass einefloat
Wert(float)
Ein Beispiel für letzteres ist:
Auf erweiternde Konvertierungen
Der Grund, warum diese kompiliert:
ist, weil die erweiternde Konvertierung von
int
zufloat
können implizit durchgeführt werden, die im Kontext einer Aufgabe.Anderen Datentyp-suffix-literalen
Wie oben erwähnt, gibt es auch die
D
oderd
suffix fürdouble
. Betrachten Sie das folgende Codesegment zum Beispiel:Gibt es auch ein suffix für
long
Literale, dieL
oderl
(Kleinbuchstaben). Es ist sehr zu empfehlen, dass Sie die Großbuchstaben-Variante.Du bist die Zuweisung einer
double
Wert auf einefloat
variable.1.1
von selbst (ohne dief
geheftet auf das Ende) wird angenommen, dass der compiler den Typdouble
. Der compiler mag es nicht, zu machen, implizite downcasts, weil es Potenziale, die es zu verlieren Präzision.double
standardmäßig, es sei denn, Sie gehören zu denf
auf das Ende, das macht Siefloat
.)Erste Zeile autocasts int zu float (ok).
Zweiten Zeile konnte nicht cast double zu float, weil der Verlust der Präzision. Sie haben zu werfen:
Dritten Zeile nicht benötigen, um zu konvertieren.
In Java, alle floating-point-Zahl (jede Zahl mit einem Dezimalpunkt) wird standardmäßig eine
double
, die präziser ist als einefloat
. Und standardmäßig in Java nicht konvertieren lassen einedouble
zu einemfloat
weil der Verlust der Präzision.Können Sie noch weisen Sie eine
double
zu einemfloat
durch casting: