将浮点值转换为NSString

时间:2012-01-23 16:09:28

标签: objective-c

您知道如何将浮点值转换为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 个答案:

答案 0 :(得分:46)

您需要为float使用%f格式说明符,而不是%@

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以了解所有其他可能的格式。

答案 1 :(得分:4)

还有一个选择:

NSString * str = [NSNumber numberWithFloat:value].stringValue;

答案 2 :(得分:1)

@"%f"听起来更适合float的格式字符串。

答案 3 :(得分:1)

[NSString stringWithFormat:@"%f", tx_nb_demande_portabilite];

答案 4 :(得分:0)

现代(并且不那么详细)的方法是:

NSString *str = @(myFloat).description;