我有一个带十进制数字的字符串数组,应该用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。
我们进行了进一步的测试:
[UPDATE]
我忘了提到我的设备区域设置是意大利语,如果我用英语设置它可以工作。
当官方区域设置小数分隔符不匹配时,可能设置一个样式并稍后修改它的小数点分隔符。
我仍然不明白为什么只有这种特定格式才会发生。
答案 0 :(得分:1)
在意大利语语言环境中,.
是分组分隔符。那应该基本上告诉你一切。
建议是,设置区域设置,不要篡改特定的语言设置。