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