I am trying to save a long long number (received as a string) such as ‘80182916772147201’ into an NSNumber.
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterBehaviorDefault];
[item setObject:[f numberFromString:@"80182916772147201"] forKey:@"theID"];
[f release];
When I NSLog this out, assuming the string was ‘80182916772147201’ I get:
NSLog(@"%lld", [[item objectForKey:@"theID"] longLongValue]);
Returns: ‘80182916772147200’ – Note the rounded down final digit.
What am I doing wrong?
The problem is that
NSNumberFormatterhas decided to represent that number as a floating-point number. To force it to use integers only: