我正在尝试两个双倍值的计算平均值,但它不能真正起作用.我认为这是"舍入错误"我是对的吗?我该如何解决?
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
为什么?
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)