其他分享
首页 > 其他分享> > 从float到Long为何不用进行强制性转换

从float到Long为何不用进行强制性转换

作者:互联网

在学习Java数据类型的时侯知道,字节即byte,位即bit;1byte=8bit。
8中基本数据类型为:
4种整形:byte(取值-128127),short(取值-3276832767),int,long
2种浮点类型:float,double(3.14F位浮点型,没有F默认为double)
1种Unicode编码的字符单元的字符型:char
1中Boolean类型:boolean
8中类型所占字节和位数如下:

在这里插入图片描述
其中float占四个字节,long占8个字节,我们可能马上会反应Long表示的范围要比float会大些,其实不然。
long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平分正负,数值范围是负2的63次方到正2的63次方-1。
  而float在内存中占4个字节,共32位,但是浮点数在内存中是这样的:
float double取值范围如下:对于单精度浮点数(float)来说,有一位符号位,指数位共8位,尾数共23位。指数能够表示的指数范围为-128~127。尾数为23位。当尾数全1时再加上小数点前面的1,指数取到最大正数127(8位,正数最大127,负数最小-128),浮点数取得正数的最大值。+1.1111111111111111111112127(1.后面23个1,由于尾数的范围1~2,其最高位总为1,故只需存取小数部分,所以小数为是23位1),约等于2*2127=3.41038。为3.4*1038负数亦然。Double的计算与此类似,double的符号位为63位,指数为62~52位,共11位。表示的范围为-1024~1023。尾数为51~0。表示的范围为+1.111111111111111111111*21023(1.后面52个1)为1.7*10308。负数亦然

标签:字节,23,尾数,double,浮点数,float,强制性,Long
来源: https://blog.csdn.net/qq_39233290/article/details/95232783