# Math Problem in Objective C

I’m trying to do some math in an Objective C method, and I’m totally at a loss as to why it’s not working. Here is the code:

``````-(IBAction)moreSetup:(id)sender{ // Connected to the Curved Average Slider
NSLog(@"%@",avgScore);
NSLog(@"%@",[avgScore class]);
NSLog(@"%@",curvedAvg);
NSLog(@"%@",[curvedAvg class]);
NSLog(@"%@",maxScore);
NSLog(@"%@",[maxScore class]);
NSLog(@"%@",[NSNumber numberWithFloat:(maxScore - curvedAvg)]);
NSLog(@"%@",[NSNumber numberWithFloat:(maxScore - avgScore)]);
// self.minCrvdStdDev = ((maxScore - curvedAvg)/(maxScore - avgScore)) * stdDev;
// NSLog(@"CS=%@ max=%@ CA=%@ AveScore=%@ stdDev=%@",minCrvdStdDev,maxScore,curvedAvg,avgScore,stdDev);
// self.curvedStdDev = minCrvdStdDev;
// [self getCurved:sender];
}

``````

…and here is the log:

First thing, how come I need to use “numberWithFloat” to get this to work, since the two number I’m subtracting are NSNumbers or NSCFNumbers (if I don’t put in that in, I get an EXC_BAD_ACCESS error, and I can leave it out if I use %f instead of %@).

Secondly, how come 92-78 = -331040?
I guess my larger question is, what is the best way to do math in Objective C? I have numbers going in and out of dictionaries, so those need to be NSNumbers, but I also need to do various math operations on these numbers.

Ric

Hi,

you can’t do simple math operations with NSNumber objects.
Convert NSNumber to primitives - do math - convert back or use NSDecimalNumber which provides math methods

Thanks Stefan,

I reworked the program, and changed most of my properties from NSNumber pointers to floats or ints. That resulted in a lot fewer conversions back and forth. I’m still a little fuzzy on when to use pointers and when not to. Thanks also for the self.property syntax info for bindings – everything is working fine now.

Ric