我有一个NSString转换为浮点值,记录的结果是这个
2,146.952 as a float is 2.000000
逗号似乎导致浮点值向下舍入,如果我使用doubleValue,它会做同样的事情。
有没有办法让它成为2146.952
?
答案 0 :(得分:5)
您应该使用NSNumberFormatter
如果格式始终为show(source:Server api),请将decimalSeparator设置为.
,将groutingSeparator设置为,
。
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setDecimalSeparator:@"."];
[numberFormatter setGroupingSeparator:@","];
NSNumber *number = [numberFormatter numberFromString:numberString];
如果字符串格式在某种程度上取决于用户首选项(通过键盘输入),请改为设置区域设置
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setLocale:[NSLocale currentLocale]];
NSNumber *number = [numberFormatter numberFromString:numberString];
第二种解决方案也可以用于第一种情况,如果你设置了像
这样的语言环境[numberFormatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
答案 1 :(得分:3)
尝试,
1)从字符串中删除逗号
NSString * str = [str stringByReplacingOccurencesOfString:@"," withString:@""];
2)从字符串中检索浮点值为
float f = [str floatValue];