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

来源:互联网 发布:linux虚拟机kvm怎么用 编辑:程序博客网 时间:2024/06/14 03:11

项目版本更新迭代中, 新增需求: 所有金额必须用标准会计表示方式(¥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
原创粉丝点击