Java Reference
In-Depth Information
das erste Bit für das Vorzeichen genutzt, die nächsten 8 Bits für den Exponenten und die restlichen
23 Bits für die Mantisse. Beim Typ
double
speichert das erste Bit das Vorzeichen, die nächsten 11
Bits den Exponenten und es bleiben noch 52 Bits für die Mantisse. Der Wertebereich von
float
liegt
zwischen
10
38
und 10
38
, der von
double
zwischen
10
308
und 10
308
. Die Genauigkeit beträgt bei
−
−
float
7 und bei
double
15 Nachkommastellen.
double-Literale enthalten einen Punkt, um die Nachkommastellen abzutrennen und können den
Buchstaben „e“ oder „E“ für die Exponentialdarstellung nutzen. Gültige double-Literale sind
23.3
,
-2.456
,
3.1415
,
3.4E23
oder
-3.42e-23
. float-Literale entsprechen den double-Literalen, nur ist
ihnen ein „f“ oder „F“ nachgestellt, wie
3.4f
oder
-3.4e10F
.
Prinzipiell sind alle Ganzzahloperatoren auch für die Gleitkommatypen definiert. Im folgenden Bei-
spiel werden die Ergebnisse der Operationen als Kommentar angemerkt:
void main() {
double d = 9.6;
double e = 6.4;
double f=d+e;
// 16.0
f=d-e;
// 3.1999999999999993
f=d*e;
// 61.44
f=d/e;
// 1.4999999999999998
}
Überraschend für Sie sind sicher die sich bei der Subtraktion und Division ergebenden Werte. Hier
sind sogenannte
Rundungsfehler
aufgetreten. Rundungsfehler treten aus dem Grund auf, dass im
Rechner immer nur endlich viele Nachkommastellen repräsentiert werden können, es in der Ma-
thematik aber eigentlich zwischen zwei reellen Zahlen immer unendlich viele weitere reelle Zahlen
gibt. Rundungsfehler stellen ein großes Problem in der Programmierung dar und können fatale Fol-
gen haben.
14.9.5 Typumwandlungen
In Java können in einem Ausdruck Operanden unterschiedlichen Typs verwendet werden. In diesem
Fall werden Typumwandlungen vorgenommen. Dabei können implizite (also automatische) und ex-
plizite Typumwandlungen, man spricht auch von
Type-Casts
, unterschieden werden.
Grundlage der Typumwandlungen ist die folgende Metrik zwischen Standarddatentypen in Java:
byte
double
. Es gilt: Besitzt ein Ausdruck zwei Operanden unter-
schiedlichen Typs, so wird der Operand des kleineren Typs implizit in den größeren Typ umgewan-
delt. Das folgende Programm enthält Beispiele für implizite Typumwandlungen:
<
short
<
int
<
long
<
f loat
<
1
void main() {
2
short s = 2;
inti=s+3;
3
floatf=i+s;
4
double d=f+i;
5
6
}





















































Search WWH ::

Custom Search