NSNumberFormatter

2021-05-02  本文已影响0人  innepeace

下面代码用于解决一个问题:使用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 @"--";
    }
}
上一篇下一篇

猜你喜欢

热点阅读