NSString - максимум 1 десятичный знак числа с плавающей запятой

Я хотел бы использовать поплавок в NSString. Я использовал stringWithFormat и %f для интеграции моего float в NSString. Проблема в том, что я хотел бы отображать только одно десятичное число (%.1f), но когда нет десятичных знаков, я не хочу отображать '.0' .

Как я могу это сделать?

Спасибо


person ncohen    schedule 29.04.2010    source источник


Ответы (4)


Я нашел ответ с помощью NSNumberFormatter и setMaximumFractionDigits, а затем:

[numberFormatter stringFromNumber:myNumber]

Спасибо всем, особенно @falconcreek

person ncohen    schedule 29.04.2010

Вы должны использовать NSNumberFormatter.

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormat:@"#,##0.#"];
NSNumber *oneThousand = [NSNumber numberWithFloat:1000.0];
NSNumber *fivePointSevenFive = [NSNumber numberWithFloat:5.75];

NSLog(@"1000.0 formatted: %@", [numberFormatter stringFromNumber:oneThousand]);
NSLog(@"5.75 formatted: %@", [numberForatter stringFromNumber:fivePointSevenFive]);

В Руководстве по программированию форматирования данных Apple есть ссылка на стандарты форматирования. Полезный справочник по Шаблоны числовых форматов

person falconcreek    schedule 29.04.2010
comment
такой полезный метод. время, чтобы подать запрос функции на репортер об ошибках. - person falconcreek; 30.04.2010

вы можете использовать %g вот так

NSLog([NSString stringWithFormat: @"test: %g", (float)1.2]);
NSLog([NSString stringWithFormat: @"test: %g", (float)1])
person Mark    schedule 29.04.2010

Недавно NSNumberFormatter немного изменился. Вот пример округления двух значащих цифр:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterNoStyle];
[numberFormatter setUsesSignificantDigits:YES];
[numberFormatter setMaximumSignificantDigits:2];

А вот ссылка на хороший свежий ресурс.

person Richard Bown    schedule 29.04.2014