NSNumberFormatter не добавляет запятую после десятичной точки - PullRequest
0 голосов
/ 03 апреля 2012

Я пытаюсь отформатировать число, например, «123.123,00». Я использую NSNumberFormatter. Код:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setGroupingSize:3];
[numberFormatter setGroupingSeparator:@"."];
[numberFormatter setUsesGroupingSeparator:YES];
[numberFormatter setMaximumFractionDigits:12];

NSNumber *num = [NSNumber numberWithDouble:result];

NSString *formattedString = [numberFormatter stringFromNumber:num]; 

Но, похоже, это не работает. Это дает результат, подобный этому "266.482107256796". Любая идея, почему результат не "266,482,107,256,796"?

Ответы [ 2 ]

0 голосов
/ 04 апреля 2012

Разделитель группировки используется для разделения цифр в целой части числа и не используется в дробной части.Там нет встроенного способа для достижения этого эффекта.Если вы поддерживаете только десятичные числа, вы можете вручную анализировать форматированную строку и вставлять запятую после каждых 3 символов, начиная с десятичного разделителя.

NSMutableString *s = [NSMutableString stringWithString: formattedString];
NSUInteger decimalSeparatorLocation = [s rangeOfString: @"."].location;
if (decimalSeparatorLocation != NSNotFound) {
    for (NSUInteger i = decimalSeparatorLocation + 4; i + 1 < [s length]; i += 4)
        [s insertString: @"," atIndex: i];
}

Предупреждение: этот код напечатан на iPad (с).

0 голосов
/ 03 апреля 2012

Попробуйте с этим:

[numberFormatter setDecimalSeparator:@","];
...