我正在尝试两个双倍值的计算平均值,但它不能真正起作用。我认为这是“舍入错误”我是对的吗?我该如何解决?
point.get(0)=1
point.get(1)=4
double Average = (double)(point.get(0) + point.get(1) / 2);
输出:
平均值:3.0
为什么?
答案 0 :(得分:7)
double Average = (double)(point.get(0) + point.get(1) / 2);
以
执行Average = (double)(1 + 4/2) = (double) (1+2) = 3.0
<强>问题强>
Divison(/)的优先级高于加法(+)
<强>修正强>
您需要添加括号以进行正确计算:
double Average = (double)((point.get(0) + point.get(1)) / 2);
应该执行:
Average = (double)((1 + 4)/2) = (double) (5/2) = 2.5
答案 1 :(得分:1)
double Average = (double)(point.get(0) + point.get(1) / 2)
运营商优先级问题。试试这个:
double Average = (point.get(0) + point.get(1)) / 2.0;
答案 2 :(得分:0)
这与运算符的顺序有关 - /
的优先级高于+
,所以实际得到的是1 +(4/2),它等于3。
请改为尝试:
double Average = (double)((point.get(0) + point.get(1)) / 2);
额外的括号将纠正您的问题。
答案 3 :(得分:0)
分部优先于加法。因此,
Average = (double)(1 + 4/2) = (double) (1+2) = 3.0
你应该更像是
Average = (double)((1+4)/2)