我们知道byte,short,char参与运算时是直接转换为int,
默认转换顺序为byte,short,char-->int-->long--->float-->double
我们知道 byte是1个字节,short是2个字节,char2个字节,int是4个字节,long是8个字节,float是4个字节,double是8个字节,总体来说都是少的字节向多的字节转换
那么问题来了:long是8个字节,float是4个字节,为什么long会向float转换呢?
答案是:
A:他们的底层存储结构不同,具体参考:http://www.yulibaozi.com/javafloat.html
B:float表示的数据范围比long的范围要大。