This question already has answers here:
Int division: Why is the result of 1/3 == 0?
(15个答案)
2年前关闭。
我试图在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):
(15个答案)
2年前关闭。
我试图在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);
最佳答案
如果N
变量的类型为int
,则((N-1) / N)
是使用整数除法计算的,并且会将5/6舍入为0。将N
更改为浮点类型,您应该会获得正确的答案。
10-06 13:09