NSNumberFormatter 和NSDateFormatter 是NsFormatter的子類。
NSNumberFormatter類有個屬性numberStyle,它是一個枚舉型,設(shè)置不同的值可以輸出不同的數(shù)字格式。該枚舉包括:
enum {
NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle, //無格式,四舍五入,原值2.7999999999,直接輸出3
NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle, //小數(shù)型,保留小數(shù)輸出2.8
NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle, //貨幣型,加上了人民幣標(biāo)志,原值輸出¥2.8
NSNumberFormatter
NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle, //百分比型,本身數(shù)值乘以100后用百分號表示,輸出280%
NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle, //科學(xué)計數(shù)型,原值表示,輸出2.799999999E0
NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle //全拼,原值的中文表示,輸出二點七九九九...
};
typedef NSUInteger NSNumberFormatterStyle;
各個枚舉對應(yīng)輸出數(shù)字格式的效果如下:
[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:一億二千三百四十五萬六千七百八十九
其中第三項和最后一項的輸出會根據(jù)系統(tǒng)設(shè)置的語言區(qū)域的不同而不同
/**
* @author liboy
*
* 格式化余額數(shù)據(jù)
*
* @param string 余額數(shù)據(jù)字符串
*
* @return 帶逗號余額
*/
- (NSString *)balanceFormatFromStr:(NSString*)string
{
NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init];
[numFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumberFormatter *numFormatter2 = [[NSNumberFormatter alloc] init];
[numFormatter2 setNumberStyle:NSNumberFormatterNoStyle];
NSNumber *num = [numFormatter2 numberFromString:string];
NSString *tempStr = [numFormatter stringFromNumber:num];
NSString *balanceStr = [tempStr substringFromIndex:1];
if ([tempStr hasPrefix:@"-"]) {
balanceStr = [NSString stringWithFormat:@"-%@",[tempStr substringFromIndex:2]];
}
return balanceStr;
}