float 和 long 引发的血案

混合运算的时候,byte , short , char 不会相互转换,都会自动提升为 int 类型,
其他类型数据在运算时,内存小的类型数据提升为内存大的类型数据。

 

long 占8字节

float 占4字节

理论上来说, long 类型的比 float 类型的要大,测试:


测试后发现,把 float 类型的值赋值给 long 类型的变量会报错,说明 long 类型的比 float 类型的要小

通过强制转换


输出 1 

一波解释:

 float 占4个字节,也就是 32 个二进制位

扫描二维码关注公众号,回复: 1720941 查看本文章

IEEE754 规定

在 32 个进制位中

1 位是符号位, 

8 位是是指数位,这八位的范围是  00000000   到   11111111

也就是 0 - 255 之间,0 代表 0 , 255 代表无限大

范围也就是 1-254 ,再减去127

所以 float 的取值范围是 2^-126 到 2^127


猜你喜欢

转载自blog.csdn.net/dfggffdd/article/details/80777137