【问题标题】:Convert string to float in Objective-C在 Objective-C 中将字符串转换为浮点数
【发布时间】:2011-03-12 14:04:41
【问题描述】:

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

我正在尝试将我从 JSON 中返回的几个字符串相乘:

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

NSLog(@"%@", subTotal);

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

【问题讨论】:

    标签: objective-c nsstring string-conversion


    【解决方案1】:

    正确的做法是

    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    numberFormatter.numberStyle = NSNumberFormatterDecimalStyle;
    
    float value = [numberFormatter numberFromString:@"32.12"].floatValue;
    

    【讨论】:

    • :-) +1 尝试移动海洋。
    • 注意语言环境!使用德语语言环境时,value 将是 0.0,@user111823 在对先前答案的评论中也提到了这一点。如果您总是期望. 作为分隔符,则需要设置numberFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
    【解决方案2】:
    your_float = [your_string floatValue];
    

    编辑:

    试试这个:

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

    【讨论】:

    • float subTotal = [[[[purchaseOrderItemsJSON objectAtIndex:i] objectAtIndex:j] objectForKey:@"Price"] floatValue]; NSLog(@"%@",subTotal);这给了我一个(空)控制台。我知道那里有一个字符串值。
    • @Max,你能试着打印那个字符串,然后粘贴到这里吗?
    • 它是:3399,输出最终是:(null)
    • 我是个笨蛋 - @"%@",我就这样吧
    • 如文档中所述,请注意格式未本地化。在德国,人们使用逗号作为分隔符,即“1,28”与“1.28”。在这种情况下 floatValue 将不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多