long可以自动转换成float吗?
可以
直接用(float)a转换,只是精度会有下降,在32位系统中float有1个符号位+8个2的幂次位+23个精度位=32位,long有1个符号位+31个精度位=32位,有效数字会有损失。
float类型呢?4个字节,32位,第1位是符号位(数符),即S,接下来的8位是指数域(阶码),即E,最后的23位,是小数域(尾数),即M。对于一个十进制数112.5,我们用科学计数法表示就是1.125*10^2,所以呢,对于一个二进制数,我们的表示就应该是1.XXX* 2^X,由于第一位永远都是1所以直接省去,因此表示为S.M*2^E。所以float的取值范围是-2^128到2^128,远远大于long的最大值。
所以java中long类型自动转换为float类型。