2013-07-28 4 views
0

저는 응용 프로그램을 작성 중이며 짧은 문자열로 1,000,000과 같은 숫자를 형식화하려고합니다.형식 NSNumber를 __ k/M/B로 입력하십시오.

몇 가지 예는 다음과 같습니다 나는 이것이 NSNumberFormatter를 사용하거나 그냥 다음 "0"의 수를 계산 반올림 될 것입니다 할 수있는 가장 좋은 방법을 생각했다

1000 => "1k" 
50000 => "50k" 
83952 => "84k" 
1000000 => "1m" 
1000000000 => "1b" 

. 누구나 NSNumberFormatter를 이러한 방식으로 사용하거나 리소스를 사용하여 시작하는 예가 있습니다.

+1

이 중복되지 않습니다. 파일 크기를 언급하지 않습니다. –

답변

0

당신은 NSNumberFormatter를 서브 클래 싱해야합니다

예 :

@implementation LTNumberFormatter 

@synthesize abbreviationForThousands; 
@synthesize abbreviationForMillions; 
@synthesize abbreviationForBillions; 

-(NSString*)stringFromNumber:(NSNumber*)number 
{ 
if (! (abbreviationForThousands || abbreviationForMillions || abbreviationForBillions)) 
{ 
    return [super stringFromNumber:number]; 
} 

double d = [number doubleValue]; 
if (abbreviationForBillions && d > 1000000000) 
{ 
    return [NSString stringWithFormat:@"%@ %@", [super stringFromNumber:[NSNumber numberWithDouble:d/1000000000]], abbreviationForBillions]; 
} 
if (abbreviationForMillions && d > 1000000) 
{ 
    return [NSString stringWithFormat:@"%@ %@", [super stringFromNumber:[NSNumber numberWithDouble:d/1000000]], abbreviationForMillions]; 
} 
if (abbreviationForThousands && d > 1000) 
{ 
    return [NSString stringWithFormat:@"%@ %@", [super stringFromNumber:[NSNumber numberWithDouble:d/1000]], abbreviationForThousands]; 
} 
    return [super stringFromNumber:number]; 
} 

@end