Incorrect value for sum of two NSIntegers

Posted by Antonio on Stack Overflow See other posts from Stack Overflow or by Antonio
Published on 2010-05-26T09:06:17Z Indexed on 2010/05/26 9:11 UTC
Read the original article Hit count: 446

Filed under:
|

Hi everybody:

I'm sure I'm missing something and the answer is very simple, but I can't seem to understand why this is happening. I'm trying to make an average of dates:

NSInteger runningSum =0;
NSInteger count=0;
for (EventoData *event in self.events) {
    NSDate *dateFromString = [[NSDate alloc] init];
    if (event.date != nil) {
        dateFromString = [dateFormatter dateFromString:event.date];
        runningSum += (NSInteger)[dateFromString timeIntervalSince1970];
        count += 1;
    }
}
if (count>0) {
    NSLog(@"average is: %@",[NSDate dateWithTimeIntervalSince1970:(NSInteger)((CGFloat)runningAverage/count)]);
}

Everything seems to work OK, except for runningSum += (NSInteger)[dateFromString timeIntervalSince1970], which gives an incorrect result. If I put a breakpoint when taking the average of two equal dates (2009-10-10, for example, which is a timeInterval of 1255125600), runningSum is -1784716096, instead of the expected 2510251200.

I've tried using NSNumber and I get the same result. Can anybody point me in the right direction?

Thanks!

Antonio

© Stack Overflow or respective owner

Related posts about iphone

Related posts about nsinteger