美文网首页
NumberFormatter数字格式化

NumberFormatter数字格式化

作者: XiaoBaa | 来源:发表于2018-12-02 17:19 被阅读18次

    GitHub Demo: https://github.com/BaHui/BHNumberFormatterHelper

    简介

    NSNumberFormatter: 数字格式化器, 可以将数字根据需要, 进行样式的格式化, 如:12,346,789.44 / $12,346,789.45, 或者对数字进行向上/向下取值, 以及对小数位数的保留.

    方法测试

    - (void)viewDidLoad {
        [super viewDidLoad];
        
        double doubleValue = 12346789.44421;
        NSLog(@"原始: %f", doubleValue);
        
        // 无格式, 四舍五入
        NSString *roundNoFloatsString = [NSNumberFormatter roundNoStyleWithDoubleValue:doubleValue scale:2];
        NSLog(@"无格式, 四舍五入-> %@", roundNoFloatsString); // 输出: 无格式, 四舍五入-> 12346789.44
    
        // 向上取整(进)
        NSString *ceilingNoFloatsString = [NSNumberFormatter ceilingNoStyleWithDoubleValue:doubleValue scale:3];
        NSLog(@"无格式, 向上取值-> %@", ceilingNoFloatsString); // 输出: 无格式, 向上取值-> 12346789.445
    
        // 向下取整(舍)
        NSString *floorNoFloatsString = [NSNumberFormatter floorNoStyleWithDoubleValue:doubleValue scale:2];
        NSLog(@"无格式, 向下取值-> %@", floorNoFloatsString); // 输出: 无格式, 向下取值-> 12346789.44
    
        
        
        // 逗号间隔, 保留`scale`位小数, 四舍五入
        NSString *commaSeparatedString = [NSNumberFormatter roundCommaSeparateWithDoubleValue:doubleValue scale:2];
        NSLog(@"逗号分割-> %@", commaSeparatedString); // 输出: 逗号分割-> 12,346,789.44
        
        // 逗号间隔, 保留`scale`位小数, 向上取值 (进)
        NSString *ceilingCommaSeparatedString = [NSNumberFormatter ceilingCommaSeparateWithDoubleValue:doubleValue scale:2];
        NSLog(@"逗号分割, 向上取值-> %@", ceilingCommaSeparatedString); // 输出: 逗号分割, 向上取值-> 12,346,789.45
        
        // 逗号间隔, 保留`scale`位小数, 向下取值 (舍)
        NSString *floorCommaSeparatedString = [NSNumberFormatter floorCommaSeparateWithDoubleValue:doubleValue scale:3];
        NSLog(@"逗号分割, 向下取值-> %@", floorCommaSeparatedString); // 输出: 逗号分割, 向下取值-> 12,346,789.444
        
        
        
        // $/¥前缀, 逗号间隔, 保留`scale`位小数, 四舍五入
        NSString *roundCurrencyCommaSeparateString = [NSNumberFormatter roundCurrencyCommaSeparateWithDoubleValue:doubleValue scale:2];
        NSLog(@"$/¥前缀, 逗号分割, 向下取值-> %@", roundCurrencyCommaSeparateString); // 输出: $/¥前缀, 逗号分割, 向下取值-> $12,346,789.44
        
        // $/¥前缀, 逗号间隔, 保留`scale`位小数, 向上取值 (进)
        NSString *ceilingCurrencyCommaSeparateString = [NSNumberFormatter ceilingCurrencyCommaSeparateWithDoubleValue:doubleValue scale:2];
        NSLog(@"$/¥前缀, 逗号分割, 向下取值-> %@", ceilingCurrencyCommaSeparateString); // 输出: $/¥前缀, 逗号分割, 向下取值-> $12,346,789.45
        
        // $/¥前缀, 逗号间隔, 保留`scale`位小数, 向下取值 (舍)
        NSString *floorCurrencyCommaSeparateString = [NSNumberFormatter floorCurrencyCommaSeparateWithDoubleValue:doubleValue scale:2];
        NSLog(@"$/¥前缀, 逗号分割, 向下取值-> %@", floorCurrencyCommaSeparateString); // 输出: $/¥前缀, 逗号分割, 向下取值-> $12,346,789.44
        
        
        
        // %后缀, 逗号间隔, 保留`scale`位小数, 四舍五入
        NSString *roundPercentCommaSeparateString = [NSNumberFormatter roundPercentCommaSeparateWithDoubleValue:doubleValue scale:1];
        NSLog(@"百分号后缀, 逗号间隔, 保留`scale`位小数, 四舍五入-> %@", roundPercentCommaSeparateString);// 输出: %后缀, 逗号间隔, 保留`scale`位小数, 四舍五入-> 1,234,678,944.4%
    
        // %后缀, 逗号间隔, 保留`scale`位小数, 向上取值 (进)
        NSString *ceilingPercentCommaSeparateString = [NSNumberFormatter ceilingPercentCommaSeparateWithDoubleValue:doubleValue scale:1];
        NSLog(@"百分号后缀, 逗号间隔, 保留`scale`位小数, 向上取值-> %@", ceilingPercentCommaSeparateString);// 输出: %后缀, 逗号间隔, 保留`scale`位小数, 向上取值-> 1,234,678,944.5%
        
        // %后缀, 逗号间隔, 保留`scale`位小数, 向下取值 (舍)
        NSString *floorPercentCommaSeparateString = [NSNumberFormatter floorPercentCommaSeparateWithDoubleValue:doubleValue scale:1];
        NSLog(@"百分号后缀, 逗号间隔, 保留`scale`位小数, 向下取值-> %@", floorPercentCommaSeparateString);// 输出: %后缀, 逗号间隔, 保留`scale`位小数, 向下取值-> 1,234,678,944.4%
    }
    

    格式化方法

    #pragma mark - 无格式
    
    // Return: 无格式, 四舍五入
    + (NSString *)roundNoStyleWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    // Return: 无格式, 向上取值 (进)
    + (NSString *)ceilingNoStyleWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    // Return: 无格式, 向下取值 (舍)
    + (NSString *)floorNoStyleWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    #pragma mark - 逗号间隔
    
    // Return: 逗号间隔, 保留`scale`位小数, 四舍五入
    + (NSString *)roundCommaSeparateWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    // Return: 逗号间隔, 保留`scale`位小数, 向上取值 (进)
    + (NSString *)ceilingCommaSeparateWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    // Return: 逗号间隔, 保留`scale`位小数, 向下取值 (舍)
    + (NSString *)floorCommaSeparateWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    #pragma mark - $/¥前缀, 逗号间隔 (前缀符号有本地化自动选择)
    
    // Return: $/¥前缀, 逗号间隔, 保留`scale`位小数, 四舍五入
    + (NSString *)roundCurrencyCommaSeparateWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    // Return: $/¥前缀, 逗号间隔, 保留`scale`位小数, 向上取值 (进)
    + (NSString *)ceilingCurrencyCommaSeparateWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    // Return: $/¥前缀, 逗号间隔, 保留`scale`位小数, 向下取值 (舍)
    + (NSString *)floorCurrencyCommaSeparateWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    #pragma mark - %后缀, 逗号间隔
    
    // Return: %后缀, 逗号间隔, 保留`scale`位小数, 四舍五入
    + (NSString *)roundPercentCommaSeparateWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    // Return: %后缀, 逗号间隔, 保留`scale`位小数, 向上取值 (进)
    + (NSString *)ceilingPercentCommaSeparateWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    // Return: %后缀, 逗号间隔, 保留`scale`位小数, 向下取值 (舍)
    + (NSString *)floorPercentCommaSeparateWithDoubleValue:(double)doubleValue scale:(NSInteger)scale;
    
    

    交流与建议

    相关文章

      网友评论

          本文标题:NumberFormatter数字格式化

          本文链接:https://www.haomeiwen.com/subject/qvajcqtx.html