0

从我的textfield我得到一个string喜欢25,50

我想将其转换stringfloat. 但如果我使用myFloat = [mytextfiel.text floatValue];我就会得到25.00.

有没有办法得到一个像这样的浮点数25.50

4

5 回答 5

5

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

NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.localizesFormat = YES;
float myFloat = [[formatter numberFromString:string] floatValue];
于 2013-06-06T10:51:36.927 回答
2

提取浮点数时只需用点替换逗号

myFloat = [[mytextfiel.text stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue];
于 2013-06-06T10:32:44.917 回答
1

或者,NSLocale如果您无权访问,您可以使用 NSScanner 来确定要做什么并完成它NSNumberFormatter

  1. 洗掉数字石斑鱼,比如1.000.000,00-> 1000000,00
  2. 扫描掉非数字前导字符。
  3. 将数字的整数部分扫描为字符串。
  4. 扫描掉整数部分和分数部分之间的非数字字符。
  5. 将小数部分扫描为字符串。
  6. 用 format 重新组合一个字符串@"%@.%@"
  7. 解析重建的字符串。

这将解析几乎任何使用情况,即德语 1.500,50€,法语 1,500€50,英语 $1500.50 都将导致数字1500.5

于 2013-06-06T11:04:38.507 回答
0

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

于 2013-06-06T10:31:09.803 回答
0

尝试这个:

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

输出/输出

25.500000
于 2013-06-06T10:51:14.067 回答