问题描述
我在Java中读到long类型可以提升float和double( )。 我想问一下,长整数在JAVA中占用8个字节的内存,浮点数需要4个字节,然后这个促销如何工作? 如果我们以这种方式推广,我们是否有可能面临一些数据丢失?
另外值得注意的是,所有其他类型的促销都是从较小尺寸的原始数据类型到类似或更大尺寸的数据类型。
- byte to short,int,long,float或double
- 短,int,long,float或double
- char到int,long,float或double
- int到long,float或double
- 长期漂浮或加倍_______________例外的Float
- 漂浮加倍
1楼
long
使用更多的字节,但它的范围更小:虽然long
不能超过2 63 ,但float
可以达到约2 127 。
显然,范围的扩大是以较低的精度为代价的,但由于float
范围较大,因此从long
到float
的转换是一种促销。
2楼
float
以与整数类型不同的方式表示。
有关浮动类型的更多信息,请阅读: : 。
熟化的内容如下所示:浮点格式由符号位组成,指数为8位,值的小数部分为23位。
该值的计算如下:( - 1)^ signbit * 1.fractionalpart * 2 ^(指数 - 127)。
因此,该算法允许表示比64位整数类型更大的值。
3楼
这个快速测试应该说明原因:
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更大的数字。