iOS中让一个数字字符串格式化(按照自己想要的格式输出)的方法

本文介绍了如何在iOS中利用NSNumberFormatter将科学计数法表示的数字转换为易读的格式,例如每3位数字进行分隔显示。通过设置NSNumberFormatter的numberStyle属性,可以实现各种数字格式的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.youkuaiyun.com/x_topfan/article/details/9363843


最近项目中用到了一个将是使用科学计数法表示的数字转换成每3个数字分割的一串数字,第一感觉是使用字符串解析,但是感觉太费劲,后来上网上扒拉了一下果然,iOS中还是有专门的处理函数的

[cpp]  view plain  copy
 print ?
  1. long double orderSum = [[NSString stringwithFormant:@"3.0315E7"]  floatValue];  
  2.         NSNumberFormatter * formatter = [[[NSNumberFormatter alloc]init]autorelease];  
  3.         formatter.numberStyle = NSNumberFormatterDecimalStyle;  
  4.         NSString * string = [formatter stringFromNumber:[NSNumber numberWithDouble:orderSum]];  

            此时string输出的格式就是30,315,000


下面是网络上的原文,讲的更详细一点

在iOS中我们可以通过NSDateFormatter来设置输出NSDate的格式。相比NSDateFormatter的大名鼎鼎,NSNumberFormatter好像知道的人就不多了。其实通过NSNumberFormatter,同样可以设置NSNumber输出的格式。例如如下代码:

[cpp]  view plain  copy
 print ?
  1. NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];  
  2. formatter.numberStyle = NSNumberFormatterDecimalStyle;  
  3. NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:123456789]];  
  4. NSLog(@"Formatted number string:%@",string);  

 输出结果为:[1223:403] Formatted number string:123,456,789

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

[cpp]  view plain  copy
 print ?
  1. enum {  
  2.     NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,  
  3.     NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,  
  4.     NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,  
  5.     NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,  
  6.     NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,  
  7.     NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle  
  8. };  
  9. typedef NSUInteger NSNumberFormatterStyle;  

各个枚举对应输出数字格式的效果如下:

[1243:403] Formatted number string:123456789

[1243:403] Formatted number string:123,456,789

[1243:403] Formatted number string:¥123,456,789.00

[1243:403] Formatted number string:-539,222,988%

[1243:403] Formatted number string:1.23456789E8

[1243:403] Formatted number string:一亿二千三百四十五万六千七百八十九

其中第三项和最后一项的输出会根据系统设置的语言区域的不同而不同。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值