Objective c NSString到浮点值不正确

Objective c NSString到浮点值不正确,objective-c,Objective C,我有一个NSString转换成浮点值,结果记录如下 2,146.952 as a float is 2.000000 逗号似乎会导致浮点值向下舍入,如果我使用doubleValue],它也会这样做 有没有办法让它成为2146.952?试试 1) 从字符串中删除逗号,如下所示: NSString * str = [str stringByReplacingOccurencesOfString:@"," withString:@""]; float f = [str floatValue];

我有一个NSString转换成浮点值,结果记录如下

2,146.952 as a float is 2.000000
逗号似乎会导致浮点值向下舍入,如果我使用doubleValue],它也会这样做

有没有办法让它成为
2146.952

试试

1) 从字符串中删除逗号,如下所示:

NSString * str = [str stringByReplacingOccurencesOfString:@"," withString:@""];
float f = [str floatValue];
2) 从字符串中检索浮点值,如下所示:

NSString * str = [str stringByReplacingOccurencesOfString:@"," withString:@""];
float f = [str floatValue];
试试看

1) 从字符串中删除逗号,如下所示:

NSString * str = [str stringByReplacingOccurencesOfString:@"," withString:@""];
float f = [str floatValue];
2) 从字符串中检索浮点值,如下所示:

NSString * str = [str stringByReplacingOccurencesOfString:@"," withString:@""];
float f = [str floatValue];

您应该使用NSNumberFormatter。
如果格式始终如所示(源代码:服务器api),请将小数分隔符设置为
,将灌浆分隔符设置为

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"]];

您应该使用NSNumberFormatter。
如果格式始终如所示(源代码:服务器api),请将小数分隔符设置为
,将灌浆分隔符设置为

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"]];