Converting number to format with NSNumberFormatter

785 Views Asked by At

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];
2

There are 2 best solutions below

0
On BEST ANSWER

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

2
On

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