1. doubleTyp

Java stellt den doubleTyp für die Arbeit mit reellen (gebrochenen) Zahlen bereit. Es belegt 8 bytesden Speicher (doppelt so viel wie der intTyp) und kann Werte im Bereich von bis speichern . Zum Vergleich: Der Typ kann einen Wert im Bereich von bis speichern .-1.7*10308+1.7*10308int-2*109+2*109

Bei reellen Zahlen wird der Bruchteil hinter dem Komma geschrieben. Zum Beispiel 123,456 oder 2,5 oder 100,00 oder 0,01. Wenn Computer solche Zahlen verarbeiten, nennen wir sie Gleitkommazahlen .

Neben dem doubleTyp haben wir übrigens auch den floatTyp (der nur 4 Byte groß ist). Der Name kommt von Fließkomma . Und der Name doublekommt von double float . A doubleist doppelt so groß wie a float: 8 bytesversus 4. Sie wird auch als Gleitkommazahl mit doppelter Genauigkeit bezeichnet .


2. Erstellen eines doubleTyps

Der Double-Typ wird zum Speichern reeller Zahlen verwendet. Um eine Variable im Code zu erstellen, die reelle Zahlen speichern kann, müssen Sie eine Anweisung wie diese verwenden:

double name;
doubleEinen Typ erstellen

Wobei Name der Name der Variablen ist. Beispiele:

Stellungnahme Beschreibung
double price;
priceEs entsteht eine reale Variable
double weight;
weightEs entsteht eine reale Variable
double lightSpeed;
lightSpeedEs entsteht eine reale Variable

Wie beim intTyp können Sie die Kurzschrift verwenden, um mehrere doubleVariablen gleichzeitig zu erstellen:

double name 1, name 2, name 3;
Mehrere doubleVariablen erstellen

Und weisen Sie ihnen sogar sofort Werte zu:

double name 1 = value 1, name 2 = value 2, name 3 = value 3;
doubleMehrere Variablen erstellen und initialisieren

Beispiele:

Stellungnahme Notiz
double price = 5.0;
Die Variable speichert5.0
double weight = 2;
Die Variable speichert2.0
double x = 1.0, y = 2.0, z = 3.0;

3. Zuweisen von ganzen Zahlen und reellen Zahlen

Es wäre schlecht, wenn ganze Zahlen nur intVariablen und reelle Zahlen nur doubleVariablen zugewiesen werden könnten. Wir möchten in der Lage sein, zwischen den beiden Arten von Zahlen umzurechnen. Und Java bietet diese Fähigkeit.

Erstens können Variablen sowohl reelle als auch ganze Zahlen zugewiesen werden double. Bei der Zuweisung von ganzen Zahlen werden diese einfach in reelle Zahlen umgewandelt. Natürlich kann dabei ein Teil der Genauigkeit verloren gehen.

Stellungnahme Notiz
double price = 5.0;
Die Variable speichert5.0
double weight = 2;
Die Variable speichert2.0
int t = 1000;
double x =  t * t;

Die xVariable speichert1000000.0

Zweitens: Wenn in einem Ausdruck eine ganze Zahl und eine reelle Zahl beteiligt sind, wird die ganze Zahl zunächst in eine reelle Zahl umgewandelt und erst dann die Operation mit der anderen reellen Zahl durchgeführt.

Stellungnahme Notiz
int t = 1000;
double x = t * 5.0;

Die xVariable speichert5000.0
System.out.println(5 * 2);
Die Nummer 10wird auf dem Bildschirm angezeigt
System.out.println(5 * 2.0);
Die Nummer 10.0wird auf dem Bildschirm angezeigt

Und schließlich ist es auch möglich, Variablen reelle Zahlen zuzuordnen int. Dabei wird der Bruchteil der reellen Zahl verworfen – die Zahl wird auf die nächste ganze Zahl abgerundet.

Darüber hinaus verlangt der Compiler vom Programmierer, dass er explizit dokumentiert, was passiert (um sicherzustellen, dass andere Programmierer verstehen, dass der Bruchteil weggelassen wird). Im Allgemeinen sieht eine solche Konvertierung im Code so aus:

integer_variable = (int)(real_number);
Einer intVariablen eine reelle Zahl zuweisen

Beispiele:

Stellungnahme Notiz
int x = (int)(5.5);
Die xVariable speichert5
double a = 5.999;
int x = (int)(a);
Die xVariable speichert5
double a = 5.999;
int b = 2;
int x = (int)(a * b);
Die xVariable speichert11


4. Division von ganzen Zahlen und reellen Zahlen in Java

Bei der Division einer ganzen Zahl durch eine ganze Zahl wird der Rest immer verworfen. Wie können wir dann 5durch dividieren, 2um zu erhalten 2.5?

Auf den ersten Blick scheint die richtige Option zu sein:

double d = 5 / 2;

Aber es ist nicht so einfach. Das Problem dabei ist, dass die Java-Maschine zunächst den Wert von berechnet 5 / 2und erst dann das Ergebnis der dVariablen zuordnet. Und die 5 / 2Operation ist eine ganzzahlige Division. Das heißt , d wird enthalten 2oder genauer gesagt:2.0

Die richtige Lösung besteht darin , mindestens eine der an der Division beteiligten Zahlen als reelle Zahl (also mit Dezimalpunkt) zu schreiben :

double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;

In jedem der Ausdrücke d wird enthalten2.5

Aber was ist, wenn wir mit Variablen arbeiten? Was wäre, wenn wir Code wie diesen hätten?:

int a = 5;
int b = 2;
double d = a / b;

Hier gibt es eine raffinierte (und offensichtliche) Lösung: Erzwingen Sie, dass die Java-Maschine Variablen in reelle Zahlen umwandelt, indem Sie sie mit eins als reelle Zahl multiplizieren ( 1.0)

int a = 5;
int b = 2;
double d = a * 1.0 / b;

Beachten Sie, dass Multiplikation und Division die gleiche Priorität haben und von links nach rechts ausgeführt werden. Das bedeutet, dass es wichtig ist, wo wir die 1,0 multiplizieren.

Beispiele:

Stellungnahme Reihenfolge der Ausführung Ergebnis
int a = 5;
int b = 2;
double d = 1.0 * a / b;
(1.0 * a) / b; 2.5
int a = 5;
int b = 2;
double d = a * 1.0 / b;
(a * 1.0) / b; 2.5
int a = 5;
int b = 2;
double d = a / b * 1.0;
(a / b) * 1.0; 2.0