关于除法和数据类型转换的一个问题
来源:2-5 编程练习
慕粉2100763
2022-01-22 11:38:47
public class MathDemo { public static void main(String[] args) { //将变量m的初值赋值为10,变量n的初值赋值为5 int m = 10; int n = 5; //变量m的值加3,n的值加5 m = m + 3; n = n + 5; //求m和n的平均值,并将结果存于变量p中 float p = (float)(m + n)/2; //求m的平方乘以n的平方,并将结果存于变量q中 float q = m*m * n*n; //将p和q的值打印输出 System.out.println("m和n的平均值为:" + p + '\n' + "m的平方乘以n的平方为:" + q); } }
这里的输出结果是:
m和n的平均值为:11.5 m的平方乘以n的平方为:16900.0
如果将第一段代码的
//求m和n的平均值,并将结果存于变量p中 float p = (float)(m + n)/2;
改成
float p = (m + n)/2;
则输出结果变成:
m和n的平均值为:11.0 m的平方乘以n的平方为:16900.0
请问这是为什么呢?
1回答
同学您好,
1、float p = (float)(m + n)/2;等式右边要先进行强制转换为float类型,然后在进行运算,得到结果为11.5
2、而 float p = (m + n)/2;等式直接进行运算为int类型,而int类型是整数类型也就是11,最后赋值给float类型的p,所以会保留小数位,即结果为11.0
祝同学学习愉快~
相似问题