Java-使用int值使用适当的转换方法计算平均值(十进制值)

Java-使用int值使用适当的转换方法计算平均值(十进制值),java,types,int,double,average,Java,Types,Int,Double,Average,这是一个基本问题,我有两个变量或字段,在Java中称为int。一个是总分,另一个是比赛轮数。我使用的是double,它将十进制数作为average变量的数据类型。但是我没有得到正确的结果 int totalScore = 75; int gameRounds = 2; public void calculateAverage() { double average = totalScore / gameRounds; System.out.println(average); }

这是一个基本问题,我有两个变量或字段,在Java中称为int。一个是总分,另一个是比赛轮数。我使用的是
double
,它将十进制数作为
average
变量的数据类型。但是我没有得到正确的结果

int totalScore = 75;
int gameRounds = 2;

public void calculateAverage() {
    double average = totalScore / gameRounds;
    System.out.println(average);

}

结果是:
37.0
,为什么它不是结果37.5,即使我使用了正确的数据类型

所以我想出来了!我试着将价值翻一番,现在效果很好。结果是
37.5
。但如果他们有更好的解决方案,我想得到其他答案

  double average = (double)totalScore / gameRounds;
注意:当我在int值周围使用括号时,它不起作用 如下图所示。所以一定要按照我上面所说的去做


在添加此问题之前,我已经搜索了可能的副本,但在您发送之前,没有找到任何类似的内容。尽管这两个问题都涉及到对整数使用除法,但我认为我的答案和回答的人已经给出了更详细的描述,说明了如何使用强制转换以及正确的使用方法。这将有助于其他人搜索类似的问题。在第一个示例中,
totalScore
被转换,然后进行除法。在您的第二个示例中,除法发生,然后对除法结果进行强制转换。关键是要理解执行算术的类型的规则。它取决于输入的类型,而不是对结果所做的操作。如第一个示例中所示,将double除以int将作为double完成。如第二个例子所示,将int除以int作为int除法。好吧,正确的方法是将两个int变量都强制转换?@CookieMonster强制转换其中一个就足够了。混合双精度/整数除法是通过将整数转换为双精度并进行双精度除法来完成的。@CookieMonster您只需要施放1。如果其中任何一个操作数是非整数的,它将使用浮点算术,从而给出非整数的答案。
double average = (double)(totalScore / gameRounds);