NSNumberFormatter - 数字格式化

系统常用

    NSNumber *number1 = @123456789;
    NSNumber *number2 = @123.456789;
    NSNumber *number3 = @(YES);
    
    NSString *str1 = [NSNumberFormatter localizedStringFromNumber:number1
                                                      numberStyle:NSNumberFormatterDecimalStyle];
    /*
     typedef NS_ENUM(NSUInteger, NSNumberFormatterStyle) {
     NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,四舍五入
     NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,金额 100,200,300.123
     NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,货币 $100,200,300.12
     NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,百分比 12%
     NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,科学计数法 1.234E8
     NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle,口语 One...
     NSNumberFormatterOrdinalStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterOrdinalStyle,
     NSNumberFormatterCurrencyISOCodeStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterCurrencyISOCodeStyle,
     NSNumberFormatterCurrencyPluralStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterCurrencyPluralStyle,
     NSNumberFormatterCurrencyAccountingStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterCurrencyAccountingStyle,
     };
     */
    
    NSString *str2 = [numberFormatter stringFromNumber:number2];
    NSNumber *number4 = [numberFormatter numberFromString:str1];

自定义

    NSNumber *number = @123456789.123456789;
    
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    
    numberFormatter.numberStyle = kCFNumberFormatterNoStyle;//
    numberFormatter.positiveFormat = @"-¤#,##0.00";// 类似dateFormatter
    numberFormatter.formatWidth = 20; // 数据宽度为20,
    numberFormatter.paddingCharacter = @"a";// 不足前面补 a
    

    numberFormatter.locale = [NSLocale currentLocale];// 本地化
    numberFormatter.generatesDecimalNumbers = NO;// 默认 NO,YES-转换成 NSNumber 方法会转换成 NSDecimalNumber
    //    if ([[numberFormatter numberFromString:str] isKindOfClass:[NSDecimalNumber class]]) {
    //        NSLog(@"NSDecimalNumber");
    //    } else if ([[numberFormatter numberFromString:str] isKindOfClass:[NSNumber class]]) {
    //        NSLog(@"NSNumber");
    //    }
    //    NSDecimalNumber *dnumber = (NSDecimalNumber *)[numberFormatter numberFromString:str];
    

    NSString *str = [numberFormatter stringFromNumber:number];    
    NSLog(@"%@",str);

其他

关于自定义数字格式化属性,还有好多东东。我也没研究,暂时用上面的能凑活用了。要是再用到,再来补充。

1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容