NSNumberFormatter setPositiveFormat

Я пытаюсь использовать NSNumberFormatter и хочу использовать: -setPositiveFormat для настройки формата.

Я хочу преобразовать 121212.12 в 12.12E+04

Я должен использовать 9 цифр и 2 десятичных знака

Я близок к своей цели с:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setFormatterBehavior:NSFoundationVersionNumber10_4]; // iOS supports only the modern 10.4+ behavior
[formatter setNumberStyle:NSNumberFormatterScientificStyle];
[formatter setMinimumFractionDigits:numberOfDecimalDigits];
[formatter setPositiveFormat:@"#.#E+00"];
[formatter setFormatWidth:9]; // set width
[formatter setPaddingCharacter:@"x"]; // choice padding Char
NSString *convertNumber = [formatter stringFromNumber:number];
return convertNumber;

Но это не работает...

Настройте формат, например:

[formatter setPositiveFormat:@"#.#E+00]; // my string is from my intuition ....

Это решение?

2-й вопрос: я не понимаю, что означает #? Также 00 в строке? (не могу найти ответ в доке)

Спасибо !


person MaRiriAndMe    schedule 13.02.2012    source источник


Ответы (1)


Насколько я понимаю, вы хотите, чтобы ваш отформатированный номер имел точно следующий формат: (2 цифры).(2 цифры)E+(2 цифры)

Вы можете настроить NSNumberFormatter следующим образом:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setPositiveFormat:@"00.00E+00"];
NSNumber *number = [NSNumber numberWithFloat:121212.12];
NSString *convertNumber = [formatter stringFromNumber:number];

Что касается значения 0 и #, посмотрите эту ссылку.

person sch    schedule 13.02.2012
comment
[NSNumber numberWithFloat:121212.12] может быть записано как @(121212.12) с использованием нового синтаксиса числового литерала. - person Evan Moran; 06.02.2013