类型转换
自动类型转换
低 ---------------------------------------------> 高
byte,short,char-> int -> long -> float -> double
强制类型转换
高----------------------------------------------> 低
double->float->long->int->byte,short,int
需要特别注意的是虽然long占8字节,float占4字节,但是long到float无需强制转换。
这是因为float类型是按照IEEE浮点标准进行存储的:
第1位,符号位,即S
接下来8位,指数域,即E。
剩下23位,小数域,即M,取值范围为[1 ,2 ) 或[0 , 1)
然后按照公式计算: V=(-1)^s * M * 2^E
也就是说浮点数在内存中的32位不是简单地转换为十进制,而是通过公式计算得来,虽然float型数据只有4个字节,但浮点数表示范围要比长整型的范围要大。