我很困惑,但这段代码看起来很简单,但令人困惑



我对输出如何给我7.5感到非常困惑。我理解它输出double的部分,但不知道为什么是7.5。我试着按照我所知的规则自己做,我得了6分。如果有人能帮助我了解java做什么来得到答案7.5

public class pc1 {
public static void main(String[] args) {
System.out.println((double) (10 / 4) * (int) 10.0 / 4 + (double) 10 / 4);
}
}

以下是如何对它们进行分组和解释。

System.out.println((double) (10 / 4) * (int) 10.0 / 4 + (double) 10 / 4);

打印

7.5

  • 乘法和除法在加减法之前从左到右计算

(double) (10/4) * 10/4;

  • 所以第一个10/4 = 2(整数数学)然后转换为2.0
  • 然后乘以10得到20.0
  • 则20.0除以4得到5.0

(double) 10/4);

  • 10被转换为double得到10.0所以10.0/4 = 2.5

现在添加结果(5.0和2.5)得到7.5

逐一计算:

  1. 10/4 == 2(因为整数除法)
  2. (double)2 == 2.0
  3. (int)10.0 == 10
  4. 2.0*10 == 20.0
  5. 20.0/4 = 5.0(+前左)
  6. (双)10 == 10.0
  7. 10.0/4 == 2.5(+后右侧)
  8. 5.0 + 2.5 = 7.5

相关内容

最新更新