我有一个使用此代码创建的NSNumbers NSMutableArray。
if (countMArray == nil) {
countMArray = [[NSMutableArray alloc] init];
}
if ([countMArray count] == 10) {
[countMArray removeObjectAtIndex:0];
}
NSNumber *currentX = [NSNumber numberWithDouble:x];
[countMArray addObject:currentX];
NSLog(@"%@", countMArray);
这就是我的数组的外观。
2014-05-02 20:34:35.065 MotionGraphs[3721:60b] (
"0.0292816162109375",
"0.0315704345703125",
"0.03271484375",
"0.030517578125",
"0.03094482421875",
"0.0302886962890625",
"0.03192138671875",
"0.0306396484375",
"0.03094482421875",
"0.02874755859375"
)
我想找到10个数字的平均值,我理解它背后的数学很简单:加上所有的值然后除以10.但是,我想知道尝试这个的最佳方法。
答案 0 :(得分:3)
如果您只想平均数字数组中的所有countMArray
,可以使用KVC collection operator:
NSNumber *average = [countMArray valueForKeyPath:@"@avg.self"];
答案 1 :(得分:1)
你应该使用if数组包含NSNumber
NSNumber *average = [countMArray valueForKeyPath:@"@avg.doubleValue"];
但是你有NSStrings,所以使用下面的方法
-(double)avgOfArray:(NSArray*)array{
double total=0.0;
for (NSString *aString in array) {
total+=[aString doubleValue];
}
return ([array count]>0)?(total/[array count]):total;
}