计算平均两个双?

Rez*_*eza 0 java

我正在尝试两个双倍值的计算平均值,但它不能真正起作用.我认为这是"舍入错误"我是对的吗?我该如何解决?

point.get(0)=1

point.get(1)=4

double Average = (double)(point.get(0) + point.get(1) / 2);
Run Code Online (Sandbox Code Playgroud)

输出:

平均值:3.0

为什么?

Jun*_*san 7

double Average = (double)(point.get(0) + point.get(1) / 2);
Run Code Online (Sandbox Code Playgroud)

被执行为

Average = (double)(1 + 4/2)  = (double) (1+2) = 3.0
Run Code Online (Sandbox Code Playgroud)

问题

Divison(/)的优先级高于加法(+)

固定

您需要添加括号以进行正确计算:

double Average = (double)((point.get(0) + point.get(1)) / 2);
Run Code Online (Sandbox Code Playgroud)

应该执行:

Average = (double)((1 + 4)/2)  = (double) (5/2) = 2.5
Run Code Online (Sandbox Code Playgroud)