Search code examples
iosnumber-formattingnsnumberformatter

Converting number to format with NSNumberFormatter


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

Solution

  • 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