2012-09-05 5 views
3
-(NSString *)convertCurrency:(NSString *)textFieldString{ 
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 

    [numberFormatter setNumberStyle: NSNumberFormatterNoStyle]; 
    [numberFormatter setGroupingSize:3]; 
    [numberFormatter setGroupingSeparator:@","]; 
    [numberFormatter setUsesGroupingSeparator:YES]; 
    [numberFormatter setMaximumIntegerDigits:20]; 
    number= [NSNumber numberWithInt:[textFieldString intValue]]; 
    NSString *numberString = [NSString stringWithFormat:@"$%@",[numberFormatter stringForObjectValue:number]]; 
    return numberString; 
} 

텍스트 필드 문자열 값을 보내면 10000000000 만 보내면 2,147,483,647 만 반환되지만 10000000000 원만 있으면됩니다. 이 문제를 해결하는 방법.2,147,483,647 호 문제를 극복하는 방법 NSNumberFormatter

+0

큰 데이터 형식을 사용하십시오. – Raptor

+0

@ ShivanRaptor 더 큰 데이터 유형은 longlongvalue를 의미합니다. 또한이 방법을 시도합니다. – Ben10

답변

4

long long를 사용합니다. 그것은 $ 9,223,372,036854775807로 충분하다고 가정합니다.

NSNumber* number = [NSNumber numberWithLongLong:[textFieldString longLongValue]]; 
NSString* numberString = [numberFormatter stringFromNumber:number]; 

BTW 당신은 ​​달러 기호를 추가 할

[numberFormatter setCurrencySymbol:@"$"]; 

대신 -stringWithFormat:

을 사용했을 수 있습니다.

+0

은 훌륭하게 작동했습니다. – Ben10