NSString浮动值不正确

时间:2013-03-04 12:22:33

标签: objective-c

我有一个NSString转换为浮点值,记录的结果是这个

2,146.952 as a float is 2.000000

逗号似乎导致浮点值向下舍入,如果我使用doubleValue,它会做同样的事情。

有没有办法让它成为2146.952

2 个答案:

答案 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];