Как форматировать и печатать числа с плавающей запятой на iOS?

Я хотел бы создать форматированный вывод числа с плавающей запятой с правильной локализацией на Cocoa -Touch. Вывод должен быть эквивалентен printf("%<a>.<b>f", n), где <a>— общее количество цифр, а <f>— максимальное количество дробных цифр.

Настройка NSNumberFormatterс помощью <a>=6и<f>=2:(Платформа — iOS 5.1 SDK, Xcode 4.3.3 и iPhone Simulator 5.1 )

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle:NSNumberFormatterDecimalStyle];
[nf setPaddingCharacter:@" "];
[nf setUsesGroupingSeparator:NO];
[nf setLocale:[NSLocale autoupdatingCurrentLocale]];
[nf setUsesSignificantDigits:YES];
[nf setMaximumSignificantDigits:6];
[nf setMaximumFractionDigits:2];
[nf setRoundingMode:NSNumberFormatterRoundFloor];
NSLog(@"Test: %@", [nf stringFromNumber:[NSNumber numberWithDouble:2.64324897]]);

. Ожидаемый результат(с немецкой локалью):Test: 2,64

Наблюдаемый выход(с немецкой локалью):Test: 2,64324

Другие наблюдения: Я пытался использовать разные значения для цифр дроби, например. [nf setMaximumFractionDigits:4]или [nf setMaximumFractionDigits:0]. Результат не изменился, кажется, что цифры дроби игнорируются. Изменение языкового стандарта на США изменяет только ,на ., а не количество дробных цифр.

Вопрос:Как я могу перевестиprintf-правильно отформатировать строку в NSNumberFormatter?

5
задан user8472 20 July 2012 в 07:17
поделиться