下面代码用于解决一个问题:使用NSNumberFormatter设置金融时,未设置formatter.locale,系统会自动设置formatter.locale为“设置-通用-语言与地区”里面选择的地区,由于类似德国这种国家,数字使用的 . 和 、(分组方式)与美国使用方式不一样,会导致数字自动转换失败,就有可能导致格式化后数字变成空值或0的情况。
+ (NSString *)addCommaFromStr:(NSString *)str withFlag:(BOOL)flag {
if(str.length != 0){
NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
formatter.numberStyle =NSNumberFormatterDecimalStyle;
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; // 写死用美国的数字模式,不然会默认用系统自带的语言系统的模式,自带语言系统模式里面的数字模式有些和美式不一样,就会导致数字出错
formatter.minimumIntegerDigits = 1;
if (flag) {
formatter.maximumFractionDigits = 2;
formatter.minimumFractionDigits = 2;
} else {
formatter.maximumFractionDigits = 0;
formatter.minimumFractionDigits = 0;
}
NSString *newAmount = [formatter stringFromNumber:[NSNumber numberWithDouble:[str doubleValue]]];
return newAmount;
}else{
return @"--";
}
}
网友评论