在Objective-C中将字符串转换为浮点数

31

如何在Objective-C中将字符串转换成浮点数?

我正试图对从JSON返回的一些字符串进行乘法运算:

float subTotal = [[[[purchaseOrderItemsJSON objectAtIndex:i] objectAtIndex:j] objectForKey:@"Price"] floatValue];

NSLog(@"%@", subTotal);

在控制台中我得到了:(null)。我知道数组里面有一个有效的字符串,因为我已经使用它来显示标签的值。

2个回答

75
your_float = [your_string floatValue];

编辑:

尝试这个:

  NSLog(@"float value is: %f", your_float);

float subTotal = [[[[purchaseOrderItemsJSON objectAtIndex:i] objectAtIndex:j] objectForKey:@"Price"] floatValue];NSLog(@"%@",subTotal); 这个在控制台上给我一个(null)。我知道里面有一个字符串值。 - Slee
1
@Max,你能试着打印一下那个字符串并粘贴在这里吗? - Ramadheer Singh
它是:3399 输出结果为:(空) - Slee
我是个菜鸟 - @"%@", 我就说这么多 - Slee
4
根据文档,需要注意格式不是本地化的。在德国,人们使用逗号作为分隔符,例如“1,28”与“1.28”。该情况下,floatValue将无法工作。 - user111823

18

正确的做法是

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.numberStyle = NSNumberFormatterDecimalStyle;

float value = [numberFormatter numberFromString:@"32.12"].floatValue;

4
谢谢您尝试移动大海,这是一种极具决心的精神。 - Benjohn
1
小心地区设置!如果使用德语地区,value 将会是 0.0, 正如之前某个回答中 @user111823 在评论中提到的。如果您总是期望使用 . 作为分隔符,则需要设置 numberFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; - thetrutz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接