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.
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.
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.
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.
Tags und Links java long-integer type-promotion