zoukankan      html  css  js  c++  java
  • iOS-格式化金额,三位一逗号

    代码地址如下:
    http://www.demodashi.com/demo/11244.html

    项目版本更新迭代中, 新增需求: 所有金额必须用标准会计表示方式(¥94,862.57).
    而之前金额展示仅仅天天人民币¥符号, 千位没有逗号, 仅仅拼接字符串就好 .

    一.Demo截图

    压缩文件截图:

    项目截图:

    二. 主要实现

    由于项目中很多地方展现统计金额, 准备考虑封装下分类.
    自定义金额的格式转化文件NSString+ZLMoney:

    通过NSNumberFormatter,设置NSNumber输出的格式:

    /**
     * 金额的格式转化
     * str : 金额的字符串
     * numberStyle : 金额转换的格式
     * return  NSString : 转化后的金额格式字符串
     */
    + (NSString *)stringChangeMoneyWithStr:(NSString *)str numberStyle:(NSNumberFormatterStyle)numberStyle {
    
        // 判断是否null 若是赋值为0 防止崩溃
        if (([str isEqual:[NSNull null]] || str == nil)) {
            str = 0;
        }
    
        NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
        formatter.numberStyle = numberStyle;
        // 注意传入参数的数据长度,可用double
        NSString *money = [formatter stringFromNumber:[NSNumber numberWithDouble:[str doubleValue]]];
    
        return money;
    }
    

    NSNumberFormatter类有个属性numberStyle,是一个枚举型,设置不同的值可以输出不同的数字格式。该枚举包括:

    /**
     * 94863
     * NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
    
     * 94,862.57
     * NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle, 
    
     * ¥94,862.57
     * NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle, 
    
     * 9,486,257%
     * NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
    
     * 9.486257E4
     * NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
    
     * 九万四千八百六十二点五七
     * NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle 
     */
    

    在所需控制器里调用测试,

    #import "NSString+ZLMoney.h"
    
    // 测试数据:
    self.cost = @"94862.57";
    // 一般标准金额格式¥94,862.57
    costValue.text = [NSString stringChangeMoneyWithStr:self.cost];
    // 选取枚举对应的金额数字格式
    costValue.text = [NSString stringChangeMoneyWithStr:self.cost numberStyle:NSNumberFormatterCurrencyStyle];
    

    测试效果:

    NSLog(@"NSNumberFormatterNoStyle== %@", [NSString stringChangeMoneyWithStr:self.cost numberStyle:NSNumberFormatterNoStyle]);
    NSLog(@"NSNumberFormatterDecimalStyle== %@", [NSString stringChangeMoneyWithStr:self.cost numberStyle:NSNumberFormatterDecimalStyle]);
    NSLog(@"NSNumberFormatterCurrencyStyle== %@", [NSString stringChangeMoneyWithStr:self.cost numberStyle:NSNumberFormatterCurrencyStyle]);
    NSLog(@"NSNumberFormatterPercentStyle== %@", [NSString stringChangeMoneyWithStr:self.cost numberStyle:NSNumberFormatterPercentStyle]);
    NSLog(@"NSNumberFormatterScientificStyle== %@", [NSString stringChangeMoneyWithStr:self.cost numberStyle:NSNumberFormatterScientificStyle]);
    NSLog(@"NSNumberFormatterSpellOutStyle== %@", [NSString stringChangeMoneyWithStr:self.cost numberStyle:NSNumberFormatterSpellOutStyle]);
    

    三. 测试效果

    打印效果如下:
    模拟器中文状态下的人民币格式:

    模拟器下美元格式:

    具体可参考代码, 项目则能够直接运行!iOS-格式化金额,三位一逗号

    代码地址如下:
    http://www.demodashi.com/demo/11244.html

    注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

  • 相关阅读:
    系统剪切板的使用UIPasteboard
    iOS开发之GCD总结
    OC报错,after command failed: Directory not empty
    一个女孩被车多次撞到的经历
    iOS一个很好的内存检测工具
    iOS 数据库sqlite3.0操作--超简单--看我就够啦
    推送碰到的一个坑
    iOS之3DTouch的使用---很简单,看我就够啦~~
    简谈造成循环引用的原因以及处理办法
    关于拼过消息推送回调,然后跳转到指定界面
  • 原文地址:https://www.cnblogs.com/demodashi/p/8508886.html
Copyright © 2011-2022 走看看