做你喜欢做的事情,任何时候都不会太迟

0%

金额字符串格式化

在一些金融类的 App 中,对于表示金额类的字符串,通常需要进行格式化后再显示出来。例如:

  • 0 –> 0.00
  • 123 –> 123.00
  • 123.456 –> 123.46
  • 102000 –> 102,000.00
  • 10204500 –> 10,204,500.00

它的规则如下:

个位数起每隔三位数字添加一个逗号,同时保留两位小数,也称为“千分位格式”。

苹果提供了 NSNumberFormatter 用来处理 NSStringNSNumber 之间的转化,可以满足基本的数字形式的格式化。我们通过设置 NSNumberFormatternumberStylepositiveFormat 属性,即可实现上述功能,非常简洁,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
- (NSString *)formatDecimalNumber:(NSString *)string {
if (!string || string.length == 0) {
return string;
}

NSNumber *number = @([string doubleValue]);
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = kCFNumberFormatterDecimalStyle;
formatter.positiveFormat = @"###,##0.00";

NSString *amountString = [formatter stringFromNumber:number];
return amountString;
}

关于 NSNumberFormatter 更详细的用法,可以参考这篇文章的介绍:NSNumberFormatter 介绍和用法