CodeGym/Java-Blog/Random-DE/Java-Float-Schlüsselwort
John Squirrels
Level 41
San Francisco

Java-Float-Schlüsselwort

Veröffentlicht in der Gruppe Random-DE
Irgendwann in der Entwicklung der Computertechnologie wurde klar, dass Zentraleinheiten Hardwaregeräte zur Verarbeitung von Gleitkommazahlen benötigten. Heutzutage können alle Computerarchitekturen effektiv mit solchen Zahlen arbeiten. Natürlich kann man auch in Programmiersprachen nicht auf die entsprechenden Datentypen verzichten. In Java gibt es zwei Gleitkomma-Datentypen: Float und Double. Das Java- Schlüsselwort Float definiert eine reelle Zahl, die 32 Bit im Speicher belegt. Über solche Zahlen werden wir in diesem Artikel sprechen.

Gleitkommazahlen. Wie werden reelle Zahlen in einem Computer gespeichert?

Um reelle Zahlen im Computerspeicher zu speichern, wird eine bestimmte Anzahl von Bits zugewiesen. Eine reelle Zahl wird als Vorzeichen (Plus oder Minus), Mantis und Exponent gespeichert. Was Mantisse und Exponent sind, lässt sich am besten anhand eines Beispiels erklären. Die ungefähre Masse des Mondes beträgt 7* 1022. Hier ist 7 die Gottesanbeterin, bei 22 der Exponent. Wenn Sie große oder umgekehrt sehr kleine Zahlen auf dem Bildschirm anzeigen, können Sie einen Eintrag wie 7E22 sehen. Dies ist die Gleitkommazahl, und 7 ist hier die Gottesanbeterin und 22 ist der Exponent oder die Potenz von 10. Diese Notation wird Exponentialnotation genannt.

Java-Float-Schlüsselwort und Java-Doppelschlüsselwort

Float-Werte (Gleitkommazahlen oder reelle Zahlen) werden in Java durch die Typen float und double dargestellt . Mit diesen Schlüsselwörtern werden Werte bis zu einem bestimmten Nachkommazeichen gespeichert. Double sind Zahlen mit doppelter Genauigkeit, die den angegebenen oder durch Berechnungen erhaltenen Werten möglichst nahe kommen. Java Double wird für alle mathematischen Berechnungen (Quadratwurzel, Sinus, Cosinus, ..) sowie für alle Berechnungen verwendet, bei denen es auf eine gewisse Genauigkeit ankommt. Der Datentyp float wird für einen weniger präzisen Gleitkommatyp verwendet. Es wird sehr selten verwendet, um Speicherplatz zu sparen. Nachfolgend finden Sie eine Tabelle mit den wichtigsten Informationen zu Float und Double sowie deren Unterschieden.
Schweben Doppelt
Hauptsächlich Float ist ein Wert mit einfacher Genauigkeit Es handelt sich um einen Wert mit doppelter Genauigkeit
Standard Größe 4 Byte (32 Bit) 8 Byte (64 Bit)
Standardwert 0,0f 0,0
Reichweite von 1.4e–045 bis 3.4e+038 von 4,9e–324 bis 1,8e+308
Wofür wird es verwendet? Um Speicher zu sparen relativ genau mit Bruchzahlen arbeiten
Das Schlüsselwort Float bedeutet also eine Zahl, einen Wert mit einfacher Genauigkeit, der 32 Bit oder 4 Byte im Speicher benötigt. Auf einigen Prozessoren ist die Arbeit mit solchen Zahlen schneller und sie beanspruchen, wie bereits erwähnt, weniger Platz im Vergleich zu Zahlen mit doppelter Genauigkeit. Es ist jedoch unmöglich, eine eindeutige Aussage über die Geschwindigkeit zu treffen. Nehmen wir an, dass einige moderne Prozessoren Zahlen mit genau doppelter Genauigkeit schneller verarbeiten.

Java Float und Double Deklaration

Sie können eine Zahl vom Typ double auf die gleiche Weise deklarieren wie Zahlen anderer Typen:
double myDouble = 2.7;
Wenn Sie jedoch eine Gleitkommazahl auf diese Weise darstellen, fordert der Compiler Sie auf, den Typ der Zahl in „Double“ zu ändern. Hier ist ein falsches Beispiel einer Float -Variablen:
public class FloatExample {
   public static void main(String[] args) {
//double and float variables
       double myDouble = 2.7;
       float myFloat = 3.14;
   }
}
Folgendes passiert, wenn Sie dieses Programm ausführen:
Error:(4, 25) java: incompatible types: possible lossy conversion from double to float
Tatsache ist, dass die Verwendung von Gleitkommazahlen unerwünscht ist und nur aus Gründen der Speicherersparnis erfolgen sollte. Alle reellen Bruchzahlen in Java sind standardmäßig Double , und die Syntax der Sprache betont dies ebenfalls. Wenn Sie wirklich mit dem Float-Typ arbeiten möchten, müssen Sie ihn explizit mit einem f am Ende der Zahl angeben.
public class FloatExample {
   public static void main(String[] args) {
//double and float variables
       double myDouble = 2.7;
       float myFloat = 3.14f;
   }
}
Float- und Double-Zahlen können übrigens in Exponentialform geschrieben werden.
float myFloat2 = 2E22f;
double myDouble2 = 3e10;
Wenn Sie ausreichend große Zahlen in ihrer „normalen“ Darstellung verwenden, zeigt Java diese sofort in Exponentialform an. Nehmen wir ein Beispiel:
public class FloatExample {
   public static void main(String[] args) {
//float variables
               float myFloatNumber1=2182818284590.45f;
               float myFloatNumber2=19822612787260.141592181f;
               System.out.println("myFloatNumber1 = " + myFloatNumber1);
               System.out.println("myFloatNumber2 = " + myFloatNumber2);
       System.out.println("myFloatNumber1 + myFloatNumber2 = " + myFloatNumber1 + myFloatNumber2);
           }
       }
Das Ergebnis dieser Programmarbeit ist hier:
myFloatNumber1 = 2.1828183E12 myFloatNumber2 = 1.98226121E13 myFloatNumber1 + myFloatNumber2 = 2.1828183E121.98226121E13

Beispiel für spezielle Float- und Double-Zahlen

In der Java-Sprache gibt es drei spezielle Gleitkommazahlen, die zur Anzeige von Überläufen und Fehlern verwendet werden. Hier sind sie:
  • Positive Unendlichkeit ist das Ergebnis der Division einer positiven Zahl durch 0. Dargestellt durch die Konstanten Double.POSITIVE_INFINITY und Float.POSITIVE_INFINITY .

  • Negative Unendlichkeit ist das Ergebnis der Division einer negativen Zahl durch 0. Dargestellt durch die Konstanten Double.NEGATIVE_INFINITY und Float.NEGATIVE_INFINITY .

  • NaN (keine Zahl) steht für die Berechnung von 0/0 oder das Ziehen der Quadratwurzel einer negativen Zahl. Dargestellt durch die Konstanten Double.NaN und Float.NAN .

Hier ist ein Beispiel für die Verwendung dieser speziellen Gleitkommazahlen:
public class FloatExample {
   public static void main(String[] args) {
       int myInt = 1;
       float zero = 0.0f;
       double negZero = -0.0;
       double negativeInfinity = Double.NEGATIVE_INFINITY;
       double positiveInfinity = Float.POSITIVE_INFINITY;

       System.out.println(myInt / zero);
       System.out.println(myInt / negZero);
       System.out.println(zero == negZero);
       System.out.println(negativeInfinity * 0);
       System.out.println(positiveInfinity+negativeInfinity);

   }
}
Das Ergebnis ist:
Unendlichkeit - Unendlichkeit wahr NaN NaN

Ist doppelte Präzision ausreichend?

Tatsächlich ist die Verwendung von Gleitkommazahlen beispielsweise in Finanzberechnungen trotz der doppelten Genauigkeit des Double- Typs nicht die beste Idee, da Rundungsfehler nicht akzeptabel sind. Versuchen Sie also, die Ausgabe des folgenden Programms auf dem Bildschirm anzuzeigen.
public class FloatExample {
   public static void main(String[] args) {
       System.out. println( "2.0 - 1.1 = " + (2.0 - 1.1));
   }
}
Sie erhalten folgendes Ergebnis:
2,0 - 1,1 = 0,8999999999999999
Es wäre logisch anzunehmen, dass das Ergebnis 0,9 sein wird. Solche Fehler kommen jedoch recht häufig vor und hängen mit der internen binären Darstellung von Zahlen zusammen. Wir können beispielsweise den genauen Wert von ⅓ nicht als Dezimalbruch darstellen; Natürlich gibt es ähnliche Einschränkungen im Binärsystem. Wenn die Aufgabe die Beseitigung von Rundungsfehlern erfordert, verfügt Java hierfür über die Klasse BigDecimal .
Kommentare
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Auf dieser Seite gibt es noch keine Kommentare