关于除法和数据类型转换的一个问题
来源: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
祝同学学习愉快~
相似问题