NSNumberFormatter格式将float字符串作为整数

时间:2017-01-20 15:54:43

标签: ios objective-c xcode nsnumber nsnumberformatter

我有一个带十进制数字的字符串数组,应该用NSNumber转换:

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
    [formatter setDecimalSeparator:@"."];
    NSArray * ar = @[@"0.0001",@"0.0010",@"0.002", @"0.02"];
    for (NSString * numS in ar) {
        NSNumber * num = [formatter numberFromString:numS];
        NSLog(@"%@", num);
    }

日志打印:
0.0001,0.001, 2 ,0.02 我无法理解为什么会发生这种情况,我也试图改变分数位属性但没有成功。
当我写一个带有3个小数位的数字,其中前两个为零时,我总是得到一个整数作为结果 我正在使用模拟器Xcode 8。 enter image description here
我们进行了进一步的测试:

  • 如果我们删除样式,它会按预期工作
  • 设备上也存在问题
  • 在带有swift 3和 style 的游乐场中,它可以正常使用

[UPDATE]

我忘了提到我的设备区域设置是意大利语,如果我用英语设置它可以工作。
当官方区域设置小数分隔符不匹配时,可能设置一个样式并稍后修改它的小数点分隔符。
我仍然不明白为什么只有这种特定格式才会发生。

1 个答案:

答案 0 :(得分:1)

在意大利语语言环境中,.是分组分隔符。那应该基本上告诉你一切。

建议是,设置区域设置,不要篡改特定的语言设置。