Long hat eine Größe von 8 Bytes, wie kann es dann in JAVA floaten (4 Bytes)?

7

Ich habe gelesen, dass in Java der lange Typ float und double ( Ссылка ) beworben werden kann. Ich wollte fragen, dass lange Integer dauert 8 Bytes Speicher in JAVA und float dauert 4 Bytes dann, wie diese Förderung funktioniert? Ist es nicht möglich, dass uns ein Datenverlust drohen könnte, wenn wir auf diese Weise werben?

Es fällt auch auf, dass alle anderen Arten von Promotions von einem kleineren primitiven Datentyp zu ähnlichen oder größeren Datentypen sind.

  • Byte zu kurz, int, long, float oder double
  • kurz zu int, long, float oder double
  • char zu int, long, float oder double
  • int zu lang, float oder double
  • lang, um zu schwimmen oder zu verdoppeln
SMagic 18.07.2015, 21:26
quelle

3 Antworten

7

float wird auf andere Weise dargestellt als integrale Typen. Weitere Informationen zum Floating-Typ finden Sie hier: Ссылка . Der gekochte Inhalt würde so aussehen: Das Fließkommaformat besteht aus einem Vorzeichenbit, 8 Bit für den Exponenten und 23 Bit für den Bruchteil des Wertes. Der Wert wird wie folgt berechnet: (-1) ^ Zeichenbit * 1.Fraktionalteil * 2 ^ (Exponent - 127). Somit erlaubt dieser Algorithmus die Darstellung größerer Werte als ein 64-Bit-Integraltyp.

    
Paul 18.07.2015, 21:38
quelle
11

long verwendet mehr Bytes, aber es hat einen kleineren Bereich: während long nicht über 2 63 hinausgehen kann, kann float auf etwa 2 127 gehen . Offensichtlich wird die Erweiterung der Reichweite mit dem Preis niedrigerer Genauigkeit durchgeführt, aber da der Bereich von float größer ist, ist die Umwandlung von long in float eine Werbung.

    
dasblinkenlight 18.07.2015 21:33
quelle
2

Dieser schnelle Test sollte zeigen warum:

%Vor%

Ausgabe:

%Vor%

Beachten Sie die wissenschaftliche Notation in der Float-Zeile. Der Float nimmt weniger Platz ein, aber aufgrund seiner Darstellung kann er eine größere Anzahl als ein Long enthalten.

    
Carcigenicate 18.07.2015 21:39
quelle