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
更改为浮点型,你应该会得到正确答案。
我正在尝试在 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
更改为浮点型,你应该会得到正确答案。