关于除法和数据类型转换的一个问题

来源: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回答

好帮手慕小明

2022-01-22

同学您好,

1、float p = (float)(m + n)/2;等式右边要先进行强制转换为float类型,然后在进行运算,得到结果为11.5

2、而 float p = (m + n)/2;等式直接进行运算为int类型,而int类型是整数类型也就是11,最后赋值给float类型的p,所以会保留小数位,即结果为11.0

祝同学学习愉快~


1

0 学习 · 9886 问题

查看课程