Преобразовать значение с плавающей запятой в NSString - PullRequest
15 голосов
/ 23 января 2012

Знаете ли вы, как я могу преобразовать значение с плавающей запятой в значение nsstring, потому что в моем коде есть ошибка.

Мой код:

- (float)percent:(float)a :(float)b{
    return a / b * 100;
}

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
  // ....   

    float tx_nb_demande_portabilite = [self percent: [(NSNumber*) [stat nb_demande_portabilite] floatValue] :[(NSNumber*) [stat nb_users] floatValue]];
    NSString *tx_nb_demande_portabilite_st = [NSString stringWithFormat:@"%@", tx_nb_demande_portabilite];
//....
}

Ошибка:

EXC_BAD ACCESS for NSString *tx_nb_demande_portabilite_st = [NSString stringWithFormat:@"%@", tx_nb_demande_portabilite];

Спасибо за вашу помощь.

Ответы [ 5 ]

46 голосов
/ 23 января 2012

Вам нужно использовать %f спецификатор формата для float, а не %@.

NSString *str = [NSString stringWithFormat:@"%f", myFloat];

Чтобы использовать определенное количество цифр после десятичной точки, используйте %.nf, где n - количество цифр после десятичной точки.

// 3 digits after decimal point
NSString *str = [NSString stringWithFormat:@"%.3f", myFloat];

Obj-C использует форматирование в стиле C printf. Пожалуйста, проверьте printf man page для всех других возможных форматов.

4 голосов
/ 23 января 2012

еще один вариант:

NSString * str = [NSNumber numberWithFloat:value].stringValue;
1 голос
/ 23 января 2012
[NSString stringWithFormat:@"%f", tx_nb_demande_portabilite];
1 голос
/ 23 января 2012

@"%f" звучит как более подходящая строка формата для float.

0 голосов
/ 19 ноября 2015

Современный (и менее многословный) подход будет:

NSString *str = @(myFloat).description;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...