2010-04-29 2 views
3

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

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

Благодаря

ответ

3

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

[numberFormatter stringFromNumber:myNumber] 

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

1

вы могли бы использовать% г, как этот

NSLog([NSString stringWithFormat: @"test: %g", (float)1.2]); 
NSLog([NSString stringWithFormat: @"test: %g", (float)1]) 
+0

не работает для 1.3333333333 например! – ncohen

2

Вы должны использовать 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. Handy Reference Number Format Patterns

+0

Спасибо, но я развиваюсь на iPhone и не поддерживает setFormat ... – ncohen

+0

такой полезный метод. время для подачи запроса функции на репортера ошибок. – falconcreek

0

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

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

И вот a link к хорошему, недавно ресурса.

Смежные вопросы