繁体   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