关于基本数据类型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的范围要大。