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);
感谢
答案 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
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
进行计算。它支持更大的数字。至少如果您不使用float
或double
等浮点值。您在timeValues数组中的值是什么类型的?
如果您想使用图书馆,可能需要查看Apache Commons Math。更准确一点:看看DescriptiveStatistics和SummaryStatistics。
答案 2 :(得分:1)
由于java数组仅限于使用32位索引,因此我们long
计算int
或Integer
数组之和总是安全的。 ,如果您需要计算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)
与其他人所说的相反,我很确定长期可以保持那么高的数字。