0

I have an NSNumber funds. When I do:

NSLog(@"%@ %i", funds, [funds integerValue]);

I get:

4869222353 574255057

Completely different numbers. The first one is correct, so there must be something wrong with converting it to integer. What am i doing wrong?

Thanks.

Sangram Shivankar
  • 3,535
  • 3
  • 26
  • 38
0xSina
  • 20,973
  • 34
  • 136
  • 253

2 Answers2

4

Sample Code :

NSNumber *myNum = [NSNumber numberWithLongLong:4869222353];
NSLog(@"%@ %lld",myNum,[myNum longLongValue]);

Why this is working?

Community
  • 1
  • 1
Bhavin
  • 27,155
  • 11
  • 55
  • 94
3

You have overflow. Integer is 32 bit long and is signed so max value is 2147483647. Printing NSNumber does it in proper way (probably using long).

blazejmar
  • 1,080
  • 8
  • 10
  • Yes this is correct, on 32bit iOS devices the max integer value is: `2,147,483,647` thus `4,869,222,353` is exceeding it. – rckoenes Jul 29 '14 at 08:59