本帖最后由 钟铭辉 于 2018-8-4 01:29 编辑
问题提出:
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字节)
储存范围:
从图中可见:
C:\Users\Administrator\Desktop\CSDN\Snipaste_2018-08-04_01-05-21.jpg
他们用科学计数法的方式不一样(底层存储结构不一样)。
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的范围要大。
|
|