关于基本数据类型long跟float默认转换问题

**

问题提出:

**
float类型数字在计算机中用4个字节存储
long类型数字在计算机中用8个字节存储
作运算时,8个字节的long类型为什么会转换成4字节的 float?理论上4个字节的类型是放不下8个字节类型的数据的。

**

分析:

**

默认转换顺序

byte(1字节)-short(2字节)-int(4字节)-long(8字节)-float(4字节)-double(8字节)-char(2字节)-boolean(1字节)

存储范围:

这里写图片描述
从图中可见:
这里写图片描述

他们用科学计数法的方式不一样(底层存储结构不一样)。

long: 2^63-1

float: 3.4*10^38 > 2*10^38 > 2*8^38 = 2*2*3^114=2*2^114 > 2^63-1

所以3.4*10^38 > 2^62-1

**

结论:

**
因为底层存储的方式不同所以导致我们误认为float类型不能存储long类型的数据。
实际是float表示的数据类型比long的范围要大。

猜你喜欢

转载自blog.csdn.net/weixin_42691149/article/details/81396659