19 May 2014

NSNumberFormatter에는 여러가지 NumberStyle이 있는데 그 중 NSNumberFormatterDecimalStyle이 있습니다.

NSNumberFormatterDecimalStyle는 10진수로 나타내는 방식이며 3자리 수마다 ,를 찍습니다.

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

NSNumber *num = @1234567890.1234;
NSLog(@"Result : %@", [numberFormatter stringFromNumber:num]);

//Result : Result : 1,234,567,890.1234


그러면 다른 스타일을 확인해보겠습니다.

NSNumberFormatterNoStyle는 소수점 이하를 버립니다.

NSNumber *num = @1234567890.1234;
[numberFormatter setNumberStyle:NSNumberFormatterNoStyle];
NSLog(@"Result : %@", [numberFormatter stringFromNumber:num]);
//Result : 1234567890


NSNumberFormatterPercentStyle는 소수점 3자리 이하를 버리고 소수점이 없어지며 끝에 %가 붙습니다. 그리고 3자리 수마다 ,를 찍습니다.

NSNumber *num = @1234567890.1234;
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
NSLog(@"Result : %@", [numberFormatter stringFromNumber:num]);
//Result : 123,456,789,012%


NSNumberFormatterCurrencyStyle는 소수점 이하를 버리고 통화량 기호가 앞에 붙습니다. 그리고 3자리 수마다 ,를 찍습니다.

NSNumber *num = @1234567890.1234;
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSLog(@"Result : %@", [numberFormatter stringFromNumber:num]);
//Result : ₩1,234,567,890


NSNumberFormatterScientificStyle는 좀 더 정확한 수로 표현합니다.

NSNumber *num = @1234567890.1234;
[numberFormatter setNumberStyle:NSNumberFormatterScientificStyle];
NSLog(@"Result : %@", [numberFormatter stringFromNumber:num]);
//Result : 1.23456789012345E9


NSNumberFormatterSpellOutStyle는 언어에 맞는 문자로 표현합니다.

NSNumber *num = @1234567890.1234;
[numberFormatter setNumberStyle:NSNumberFormatterSpellOutStyle];
NSLog(@"Result : %@", [numberFormatter stringFromNumber:num]);
//Result : 십이억 삼천사백오십육만 칠천팔백구십점일이삼사오


만일 인스턴스 메소드로 호출하지 않고 클래스 메소드로 호출하고자 하는 경우 [NSNumberFormatter localizedStringFromNumber:]를 이용하면 위에서 얻는 결과를 동일하게 얻을 수 있습니다.

NSString *str = [NSNumberFormatter localizedStringFromNumber:@1111111.1111 numberStyle:NSNumberFormatterDecimalStyle];
NSLog(@"Result : %@", str);
//Result : 1,111,111.111


Apple 문서에서 좀 더 많은 정보를 볼 수 있습니다.