如何将String转换为Float

时间:2013-06-06 10:22:34

标签: objective-c string decimal

从我的textfield我得string 25,50

我想将此string转换为float。但是,如果我使用myFloat = [mytextfiel.text floatValue];,我只会获得25.00

是否有方法获得像25.50一样的浮动?

5 个答案:

答案 0 :(得分:4)

用句点替换commna有效,但您也可以使用NSNumberFormatter并适当设置您的语言环境(注意:未经测试的代码):

NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.localizesFormat = YES;
float myFloat = [[formatter numberFromString:string] floatValue];

答案 1 :(得分:2)

在解压缩浮动

时,只需用点替换逗号
myFloat = [[mytextfiel.text stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue];

答案 2 :(得分:1)

或者,如果您无法访问NSLocale,则可以使用NSNumberFormatter确定要执行的操作并使用NSScanner完成此操作:

  1. 洗掉数字石斑鱼,例如1.000.000,00 - > 1000000,00
  2. 扫描非数字前导字符。
  3. 将数字的整数部分扫描为字符串。
  4. 扫描积分和分数部分之间的非数字字符。
  5. 将分数部分扫描为字符串。
  6. 重新组合格式为@"%@.%@"的字符串。
  7. 解析那个重建的字符串。
  8. 这几乎可以解析任何使用案例,即德语为1.500,50€,法语为1,500€50,英语为1500.50美元,均为1500.5

答案 3 :(得分:0)

浮点数必须遵循小数点格式(无论世界的哪个区域),这意味着你的字符串的最终产品必须有一个。而不是逗号。我建议你在存储到数据库之前或处理值之前替换它。

答案 4 :(得分:0)

试试这个:

float floatNo = [[@"25.50" stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue];
NSLog(@"%f",floatNo);

<强> O / P

25.500000