关于nsstring:在C中浮动的字符串

String to float in objective c

我有一个解析器返回一些字符串值,我想用它作为类实例初始化的参数。

我有一个方法询问两个nsstring和一个float值,但我无法将该字符串转换为float,这是我的代码:

1
2
3
4
5
6
7
 NSString *from = [[NSString alloc] initWithString:@"EUR"];
    NSString *to = [[NSString alloc] initWithString:[attributeDict objectForKey:@"currency"]];
    NSNumber *rate = [[NSNumber alloc] initWithFloat:[[attributeDict objectForKey:@"rate"] doubleValue]];


   currency = [[Currency init] alloc];
   [currency addCurrencyWithFrom:from andTo:to andRate:rate];

在H

1
- (id) addCurrencyWithFrom: (NSString *) from_ andTo:(NSString *) to_ andRate:(float *) float_;


NO NO NO NO NO。

使用NSNumberFormatter安。这是为什么它是否。-doubleValue只是-floatValue鸭是快速和容易的临时固定,但他们失败的淋浴方式。例如:

1
2
3
4
5
NSLog(@"%f", [@"123" floatValue]); //logs 123.0000
NSLog(@"%f", [@"abc" floatValue]); //logs 0.0000
NSLog(@"%f", [@"0" floatValue]);   //logs 0.0000
NSLog(@"%f", [@"42" floatValue]);  //logs 42.0000
NSLog(@"%f", [@"42x" floatValue]); //logs 42.0000

-floatValue冰unable A正确区分"之间的两个数(@"0")和一个无效(@"abc")。

NSNumberFormatter,在其他的手,会给你nil如果它不能parse和NSNumber它,如果它不安。它也需要的东西像货币符号、小数点和区域特异性thousands separators,和用户的现场为客户。-floatValue和没有朋友。

看到这个问题的更多相关信息:如何convert nsstring到安安nsnumber


1
float f = [yourStringObject floatValue];


试试:

1
2
double f = [from_ doubleValue];
double t = [to_ doubleValue];

通过nsnumber安也,而不是一个float *不会给你的结果,你是期待。