java中数据类型自动类型转换为什么转换顺序是byte-short-int-long-float-double

float所占字节比long少吗?

byte1个字节short2个字节,int占4个字节,long占8个,float占8个,double占16个
字节从低的向高的可以自动转,高向低的不能。
long和float是同样字节的,long可以转float,但是float转long会丢精度。所以关系是这样的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-07
是看精度的,从下到上这样不会发生数据丢失,如果从下到下,比如double到float,会因为精度问题而发生数据丢失本回答被网友采纳
第2个回答  2013-09-07
byte 1字节 8位
short 2字节 16位
int 4字节   32位
long 8字节  64位
float 4字节 32位
double 8字节 64位

也许记错了

追问

是这样的,但是就是不知道为什么long为什么可以自动转换为int

第3个回答  2013-09-07
浮点数所能表示的数的范围比整数大……追问

可是float占4个字节而long占八个字节

追答

反正像10的17次方这样的数long可以精确表示,但是float和double都不能完全精确的表示,这一点float和double都是一样的,转换成哪一个都不能避免精度丢失。但是如果是整型的10的17次方加上浮点数的10的30次方,结果转换成long可能最多只有实际结果的十分之一,而用float表示的话只是失去相对而言非常微小的精度而已

相似回答