计算平均两个双?

时间:2015-01-14 06:22:49

标签: java

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

point.get(0)=1

point.get(1)=4

double Average = (double)(point.get(0) + point.get(1) / 2);

输出:

  

平均值:3.0

为什么?

4 个答案:

答案 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)