![](/img/trans.png)
[英]float (which is having 4bytes of memory) can hold long (which is having 8bytes of memory) value in Java. how?
[英]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個字節,然后這個促銷如何工作? 如果我們以這種方式推廣,我們是否有可能面臨一些數據丟失?
另外值得注意的是,所有其他類型的促銷都是從較小尺寸的原始數據類型到類似或更大尺寸的數據類型。
long
使用更多的字節,但它的范圍更小:雖然long
不能超過2 63 ,但float
可以達到約2 127 。 顯然,范圍的擴大是以較低的精度為代價的,但由於float
范圍較大,因此從long
到float
的轉換是一種促銷。
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.