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):

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

最佳答案

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

10-06 13:09