在iOS中格式化数字字符串表示形式的最佳方法是什么

mia*_*iah 1 nsnumberformatter ios

在我写的iOS应用程序中,我收到一个带有价格字符串表示的json对象,如下所示:

{
  "price":"20000"
}
Run Code Online (Sandbox Code Playgroud)

我想用逗号来格式化以便于阅读,我找到了一种方法,但我觉得这是一个疯狂的笨重(我可能只是没有在谷歌中使用正确的术语).

 NSNumberFormatter *formatter = [NSNumberFormatter new];
 [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
 NSString price = [NSString stringWithFormat:@"$%@", [formatter stringFromNumber:[NSNumber numberWithInteger:[price intValue]]]];
Run Code Online (Sandbox Code Playgroud)

对于我来说,获得正确的格式似乎过于复杂

  1. 将NSString转换为int.
  2. 将int转换为NSNumber.
  3. 将NSNumber转换为NSString.
  4. 用正确的格式创建一个新的字符串(@ david/@ wain向我展示了如何放弃这一步!)

Dav*_*ist 6

最好的货币将是 NSNumberFormatterCurrencyStyle

NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *price = @([priceTextFromJSON doubleValue]);
NSString *priceText = [formatter stringFromNumber:price];
Run Code Online (Sandbox Code Playgroud)

  • 请确保始终在用户区域设置中返回价格,否则将显示错误的货币符号. (3认同)
  • 如果您对该JSON有任何控制权,则应将数字作为数字发送.另请注意,如果您打算用钱进行*任何*计算,那么您应该*始终*将它们作为`NSDecimalNumber'来执行 (2认同)