整数的除法产生一个浮点数
一、整数的除法产生一个浮点数
1、代码
@Test
void contextLoad17() {
int a = 1;
int b = 2;
float f1 = a / b;
float f2 = (float) a / b;
float f3 = (float) (a / b * 1.0);
float f4 = (float) (1.0 * a / b);
System.out.println("发生了隐式转换" + f1);
System.out.println("没发生隐式转换" + f2);
System.out.println("运算无优先级时自左向右" + f3);
System.out.println("运算无优先级时自左向右" + f4);
}
2、结果
3、解析
- 两个操作数(1和2)是整数,因此使用整数算术(此处为除法)。将结果变量声明为float只会导致除法后发生隐式转换,整数除法会返回除法舍去小数点以后的真实结果。
另外,请注意,如果两个操作数(数字)均以浮点数给出;1.0和2.0,甚至只是第一个,然后使用浮点运算,就可以得到0.5。 - 演员表的优先级高于分区,因此发生在分区之前。
另一个操作数将由编译器自动有效地强制转换为浮点数,因为规则指出,如果另一个操作数为浮点型,则即使另一个操作数是整数,该操作也将是浮点运算。