转自:http://blog.youkuaiyun.com/x_topfan/article/details/9363843
最近项目中用到了一个将是使用科学计数法表示的数字转换成每3个数字分割的一串数字,第一感觉是使用字符串解析,但是感觉太费劲,后来上网上扒拉了一下果然,iOS中还是有专门的处理函数的
- long double orderSum = [[NSString stringwithFormant:@"3.0315E7"] floatValue];
- NSNumberFormatter * formatter = [[[NSNumberFormatter alloc]init]autorelease];
- formatter.numberStyle = NSNumberFormatterDecimalStyle;
- NSString * string = [formatter stringFromNumber:[NSNumber numberWithDouble:orderSum]];
此时string输出的格式就是30,315,000
下面是网络上的原文,讲的更详细一点
在iOS中我们可以通过NSDateFormatter来设置输出NSDate的格式。相比NSDateFormatter的大名鼎鼎,NSNumberFormatter好像知道的人就不多了。其实通过NSNumberFormatter,同样可以设置NSNumber输出的格式。例如如下代码:
- NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
- formatter.numberStyle = NSNumberFormatterDecimalStyle;
- NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:123456789]];
- NSLog(@"Formatted number string:%@",string);
输出结果为:[1223:403] Formatted number string:123,456,789
其中NSNumberFormatter类有个属性numberStyle,它是一个枚举型,设置不同的值可以输出不同的数字格式。该枚举包括:
- enum {
- NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
- NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
- NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
- NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
- NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
- NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle
- };
- 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:一亿二千三百四十五万六千七百八十九
其中第三项和最后一项的输出会根据系统设置的语言区域的不同而不同。