Java 简单方程的运算符优先级问题

Java Operator Precedence issue for a simple equation

我正在尝试在 Java 中实现一个简单的方程式,但显然由于我无法理解的运算符优先级而不断得到错误的答案。

等式是:

NewMean = ((N-1) / N) * OldMean + (Xn / N)

举个简单的例子: N = 6 ;旧均值 = 6 ; Xn = 16

所以, NewMean = 5/6 * 6 + 16/6 = 7.6667 (正确答案)

但是在 Java 的代码实现中我得到了错误的答案 (2.6665):

double NewMean = ((N-1)/N)*oldMean + (Xn/N);

如果 N 变量的类型为 int,则 ((N-1) / N) 使用整数除法计算,并将 5/6 舍入为 0。将 N 更改为浮点型,你应该会得到正确答案。