找到可变数量的双精度内的平均值

JBo*_*Boy 1 java double average arraylist

我有一个双打的ArrayList,我需要找到所有数字之间的平均值.arraylist中的Double实例的数量不是恒定的,可能是2,可能是90我已经尝试了几个小时来自己获得算法,但无论如何也无法让它工作.

你有什么建议吗?或者您可以将我链接到现有的图书馆以获得此平均值?

谢谢

aio*_*obe 5

创建一个sum变量:

double sum = 0;
Run Code Online (Sandbox Code Playgroud)

使用for循环遍历列表中的元素:

for (double d : yourList)
Run Code Online (Sandbox Code Playgroud)

在每次迭代中,添加到sum当前值:

    sum += d;
Run Code Online (Sandbox Code Playgroud)

在循环之后,要找到平均值,除以sum列表中的元素数:

double avg = sum / yourList.size();
Run Code Online (Sandbox Code Playgroud)

这里的每个人都认为这太简单了 ......

上述解决方案实际上并不完美.如果列表中的前几个元素非常大并且最后的元素很小,则sum += d由于双精度的精确度,可能不会对末尾产生影响.

解决方案是在进行平均计算之前对列表进行排序:

Collections.sort(doublesList);
Run Code Online (Sandbox Code Playgroud)

现在首先添加小元素,这样可以确保它们尽可能准确地计算并为最终总和做出贡献:-)