A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 钟铭辉 于 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的范围要大。

1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马