NSNumberFormatter

下面代码用于解决一个问题:使用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 @"--";
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容