iOS-格式化金额,三位一逗号

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

一.Demo截图

压缩文件截图:

项目截图:

二. 主要实现

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

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

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

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

 
 
  1. /**
  2. * 94863
  3. * NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
  4. * 94,862.57
  5. * NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
  6. * ¥94,862.57
  7. * NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
  8. * 9,486,257%
  9. * NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
  10. * 9.486257E4
  11. * NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
  12. * 九万四千八百六十二点五七
  13. * NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle
  14. */

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

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

测试效果:

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

三. 测试效果

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

模拟器下美元格式:

具体可参考代码, 项目则能够直接运行!

如需看详情版,请到这里下载,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值