簡體   English   中英

Long的大小是8字節,那么如何在JAVA中“提升”浮動(4字節)?

[英]Long is of size 8 bytes then how can it be 'promoted' to float(4 bytes) in JAVA?

我在Java中讀到long類型可以提升float和double( http://www.javatpoint.com/method-overloading-in-java )。 我想問一下,長整數在JAVA中占用8個字節的內存,浮點數需要4個字節,然后這個促銷如何工作? 如果我們以這種方式推廣,我們是否有可能面臨一些數據丟失?

另外值得注意的是,所有其他類型的促銷都是從較小尺寸的原始數據類型到類似或更大尺寸的數據類型。

  • byte to short,int,long,float或double
  • 短,int,long,float或double
  • char到int,long,float或double
  • int到long,float或double
  • 長期漂浮或加倍_______________例外的Float
  • 漂浮加倍

long使用更多的字節,但它的范圍更小:雖然long不能超過2 63 ,但float可以達到約2 127 顯然,范圍的擴大是以較低的精度為代價的,但由於float范圍較大,因此從longfloat的轉換是一種促銷。

float以與整數類型不同的方式表示。 有關浮動類型的更多信息,請閱讀: https//en.wikipedia.org/wiki/Single-precision_floating-point_format 熟化的內容如下所示:浮點格式由符號位組成,指數為8位,值的小數部分為23位。 該值的計算如下:( - 1)^ signbit * 1.fractionalpart * 2 ^(指數 - 127)。 因此,該算法允許表示比64位整數類型更大的值。

這個快速測試應該說明原因:

public class Main {

    public static void main(String[] args) {
        System.out.println("Float: " + Float.MAX_VALUE);
        System.out.println("Long: " + Long.MAX_VALUE);
    }
}

輸出繼電器:

Float: 3.4028235E38
Long: 9223372036854775807

請注意Float系列中的科學記數法。 Float占用的空間較少,但由於它的表現,它可以容納比Long更大的數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM