1

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

2,146.952 as a float is 2.000000

逗号似乎会导致浮点值向下舍入,如果我使用 doubleValue] 它也会这样做。

有没有办法做到这一点2146.952

4

2 回答 2

5

您应该使用 NSNumberFormatter。
如果格式始终为显示(来源:服务器 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"]];
于 2013-03-04T12:32:48.233 回答
3

尝试,

1)从字符串中删除逗号为

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

2) 从字符串中检索浮点值

float f = [str floatValue];
于 2013-03-04T12:25:41.280 回答