NSString - не более 1 десятичного числа с плавающей запятой - PullRequest
3 голосов
/ 29 апреля 2010

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

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

Спасибо

Ответы [ 4 ]

3 голосов
/ 30 апреля 2010

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

[numberFormatter stringFromNumber:myNumber]

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

2 голосов
/ 29 апреля 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 есть ссылка на стандарты форматирования. Удобный справочник Шаблоны числового формата

1 голос
/ 29 апреля 2010

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

NSLog([NSString stringWithFormat: @"test: %g", (float)1.2]);
NSLog([NSString stringWithFormat: @"test: %g", (float)1])
0 голосов
/ 29 апреля 2014

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

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

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

...