2015-08-09 3 views
0

В моем приложении Java Мне нужно пересчитать среднее значение на основе следующих данных:Перерасчет среднего значения

  1. Я знаю, текущее среднее значение - avgValue
  2. Я знаю, что avgValue представляет собой среднее значение для списка из 12 значений - count.

Основываясь на этой информации, как пересчитать avgValue, когда в этот список из предыдущих 12 значений добавлен новый value. Что нового avgValue для списка из 13 значений - count + 1?

ответ

1
Current Sum = avgValue * 12 
New sum = current Sum + New value 
New average = New sum/13 
1

Если вы хотите, чтобы вы не переполняли свой тип данных, вам нужно будет не вычислять сумму. Я предложил бы использовать:

New average = avgValue + ((New value - avgValue)/13) 
+0

работает быстрее, но мои тесты не со следующей ошибкой - ожидается: <+4,333333333333333> но <4.333333333333334> – alexanoid

+1

@alexanoid Это числовая точность. Вы считаете, что неудача? Вы действительно думаете, что у вас когда-нибудь будет 16 мест значительных цифр? – dpmcmlxxvi

+0

Далеко умнее, чем принятый. –

Смежные вопросы