float是比long强的类型.long会被自动转换为float.而float转化为long需要进行强制类型转化..下面这段代码体现了float和long之间的互相转化时出现的问题.. public static void main(String[] args) { // TODO Auto-generated method stub float f = 24l + 2.2f; // long l = 2144l + 2.2f; // Type mismatch: cannot convert from float to long long l = 128l; f = l + 2.2f; // l = f + 14L; // Type mismatch: cannot convert from float to long }
当一个运算符两端分别是long和float的时候,会都转换成float,并且结果是float,比如 (1.5f+2)/5 这个时候先算1.5f+2.0f,是3.5f,然后3.5f/5.0f=0.7f但是要注意的是,如果运算步骤中出现了两端都是long的情况,则这一步运算按long进行,比如是1.5f+2/5的话,先算2/5=0,再算1.5f+0.0f,结果就是1.5f了。这个时候要写 1.5f+2.0f/5这样才能得到正确的结果