java中一个表达式有float和long两种类型的变量,编译器是怎么转换,进行运算的

来源:百度知道 编辑:UC知道 时间:2024/06/17 04:00:44
如题,是将long转换为float?还是怎么样,请知道的人告诉一下

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
}

转换为double吧

基本类型转换是按照向上转换的原则,float和long如果两个一起进行运算,那么就会默认将结果转换为float,如果想将结果转换为long,就要强制转换.
(long)float

当一个运算符两端分别是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这样才能得到正确的结果