如何从NSMutableArray中找到一组NSNumbers的平均值?

时间:2014-05-02 08:38:32

标签: ios objective-c nsmutablearray nsnumber

我有一个使用此代码创建的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.但是,我想知道尝试这个的最佳方法。

2 个答案:

答案 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;
}