Reputation: 21
How can I convert number like 4273095782 to number 4 273 095 782 with NSNumberFormatter?
I use this diode but not get it
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = kCFNumberFormatterDecimalStyle;
formatter.maximumIntegerDigits = 3;
formatter.minimumFractionDigits = 3;
formatter.groupingSeparator = @" ";
formatter.decimalSeparator = @" ";
NSString *formattedNumber = [formatter stringFromNumber:p];
Upvotes: 0
Views: 777
Reputation: 1192
Try this little manipulation:
NSNumber *p = [NSNumber numberWithInt:123456789];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = kCFNumberFormatterDecimalStyle;
// formatter.maximumIntegerDigits = 10;
// formatter.minimumFractionDigits = 3;
formatter.groupingSeparator = @" ";
formatter.decimalSeparator = @" ";
NSString *formattedNumber = [formatter stringFromNumber:p];
NSLog(@"Formatted:%@", formattedNumber);
Hope this helps you. You don't need to limit the integer digits in this case :)
Result should be: 2014-11-27 11:49:39.855 NSNumberFormatter[2399:789883] Formatted:123 456 789
Upvotes: 0
Reputation: 46543
You need to use two properties : setGroupingSize:
for last 3 digits and setSecondaryGroupingSize:
for all other digits:
The complete implementation will go like this:
NSInteger integer = 4273095782;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSize:3];
[formatter setSecondaryGroupingSize:3];
[formatter setGroupingSeparator:@" "];
NSString * threeSeparated = [formatter stringFromNumber:@(integer)];
NSLog(@"threeSeparated: %@", threeSeparated);
Output: 4 273 095 782
Upvotes: 1