Java:库来计算均值?

时间:2011-03-30 21:19:03

标签: java

Jave中是否有函数来计算平均值?

我自己试过,但我担心这笔钱的价值太高了:5 642 782 840

Java中的整数是5 642 782 840吗?我不这么认为......

for (int i = 0; i < timeValues.length; i++) {               
    sum = sum + Integer.parseInt(timeValues[i]);
}
   time = Integer.toString(sum / timeValues.length);    

感谢

6 个答案:

答案 0 :(得分:2)

//================================================= mean
public static double mean(double[] p) {
    double sum = 0;  // sum of all the elements
    for (int i=0; i<p.length; i++) {
        sum += p[i];
    }
    return sum / p.length;
}//end method mean

关闭this site

一次 Java mean

之后

答案 1 :(得分:1)

Integer可以保存-2.147.483.648和2.147.483.647之间的值。 Long可以保存-9.223.372.036.854.775.808和9.223.372.036.854.775.807之间的值。

因此long适合您的用例。

没有库的另一个解决方案是使用java.math.BigInteger进行计算。它支持更大的数字。至少如果您不使用floatdouble等浮点值。您在timeValues数组中的值是什么类型的?

如果您想使用图书馆,可能需要查看Apache Commons Math。更准确一点:看看DescriptiveStatisticsSummaryStatistics

答案 2 :(得分:1)

由于java数组仅限于使用32位索引,因此我们long计算intInteger数组之和总是安全的。 ,如果您需要计算long或集合数组的总和或平均值,那么您可能想要使用java.math.BigInteger

Chris有一般的正确答案,但因为你似乎正在使用一个字符串数组

public static double meanOfStrings(String[] p) {
  long sum = 0;  // sum of all the elements
  for (int i=0; i<p.length; i++) {
     sum += Long.parseLong(p[i]);
  }
  return ((double) sum) / p.length;
}

答案 3 :(得分:1)

建立@ smas的解决方案

public static double mean(double[] m) {
  double sum = 0;
  for (int i = 0; i < m.length; i++) {
    sum += (double)m[i]/ (double)m.length;
  }
  return sum;
}

通过分开,我们可以避免溢出问题。

答案 4 :(得分:0)

简单使用:

public static double mean(double[] m) {
    double sum = 0;
    for (int i = 0; i < m.length; i++) {
        sum += m[i];
    }
    return sum / m.length;
}

为了高级使用,请尝试一些库: 看看Apache Commons Math

答案 5 :(得分:0)

与其他人所说的相反,我很确定长期可以保持那么高的数字。