2012-09-27 5 views
1

가능한 중복에 대한 :
Convert int to shortened, formatted string를 단축의 수천 K와 NSDecimalNumber에서 문자열 및 M 수백만 등

내가 문자열로 NSDecimalNumber의 값을 변환하고 싶습니다 :

5 자리 숫자는 K를 사용하여 천 단위를 나타내며 3 자리 유효 숫자 (예 : 54,321 ---> 54.3K, 654,321 ---> 65.4K)

7 자리 숫자는 M을 사용하여 수백만을 나타내며 유효 숫자는 3 자리입니다 (예 : 7654321 ----> 7.65M, 987,654,321 ---> 9.88M)

10 자리 번호와 사용 B 위의 수십억을 나타내며,이 작업을 수행하는 가장 좋은 방법 3 개 유효 숫자

어떤 제안을 가지고 ? 감사.

(일부 비슷한 질문을 보았다,하지만 하나 목표 - C/아이폰 OS.)

+0

이 답변이 도움이 될 것입니다. 나는 그것을 사용하고 있고 그것은 정말로 잘 작동한다. http://stackoverflow.com/questions/11993806/convert-int-to-shortened-formatted-string – AndyDev

+0

'NSDecimalNumber'를 사용하고 있으므로'double'으로 변환하고 싶지는 않습니다. 그것을 지침으로 사용하십시오. – James

답변

0

FormatterKit 비트, 바이트, 메가 바이트 등이 TTTUnitOfInformationFormatter 클래스를 참조 포맷 할 수 있습니다.

예 :

프로젝트에 TTTUnitOfInformationFormatter.h 및 TTTUnitOfInformationFormatter.m를 추가합니다. 당신이 "K"를 원하는 경우 대신 "KB", "B"의

12.35 KB 

대신 :

#import "TTTUnitOfInformationFormatter.h" 

NSDecimalNumber *numberOfBytes = [NSDecimalNumber 
            decimalNumberWithString:@"12345"]; 
TTTUnitOfInformationFormatter *formatter = [[TTTUnitOfInformationFormatter alloc] 
              init]; 
// Set this to NO if you want to show bits instead of bytes. 
formatter.displaysInTermsOfBytes = YES; 
// Set this to YES if you want 1024 bytes in a KB instead of 1000 bytes. 
formatter.usesIECBinaryPrefixesForCalculation = NO; 
NSString *formatted = [formatter stringFromNumber:numberOfBytes 
              ofUnit:TTTByte]; 
NSLog(@"%@", formatted); 

그것은 인쇄됩니다 : 다음 샘플 코드는 바이트의 카운트로 번호 12345를 포맷합니다 "GB"등등이 클래스를 시작점으로 사용할 수 있습니다.

+0

프로젝트에서 관련 코드를 게시 할 수 있다고 생각하십니까? 나는 꽤 초보자이며 프로젝트 소스에서 이러한 것들을 찾아내는 데 꽤 오래 걸립니다. 고맙습니다. – James

+0

작동 코드 샘플을 추가했습니다. –