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

时间:2018-10-15 17:17:35

标签: java operator-precedence

我正在尝试用Java实现一个简单的方程式,但是由于操作符的优先级,我仍然无法理解,显然会一直得到错误的答案。

等式是:

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

在一个简单的示例中: N = 6; OldMean = 6; Xn = 16

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

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

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

1 个答案:

答案 0 :(得分:5)

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