2014-01-22 1 views
0

이 답변을 찾을 수 없지만 NSDecimalNumber로 변환하려고하면 소수점이있는 문자열이 있습니다. 십진법이나 그 이후에 오는 것이 아닌 전체 숫자 만 얻으십시오. decimalNumberWithString 방법은 내 소수를 제거하고 그 다음에 오는 것을 무시하는 경우NSDecimalNumer로 변환 할 때 문자열에서 십진수가 표시되지 않습니다.

someText.text = @"200.00"; 
tempAmountOwed = [NSDecimalNumber decimalNumberWithString:someText.text]; // gives me back 200 

내가 알아낼 수없는 것 : 이것은 내가 노력하고 있습니다 것입니다.

도움 주셔서 감사합니다.

+0

@ "200.45"로 시도하십시오. – drekka

답변

1

당신은 방법 decimalNumberWithString: locale: 방법을 사용할 수 있습니다. 예를 들어 대한

: -

코드 :

NSLog(@"%@", [NSDecimalNumber decimalNumberWithString:@"200.00"]); 
NSLog(@"%@", [NSDecimalNumber decimalNumberWithString:@"200.00" locale:NSLocale.currentLocale]); 

로그 다음 제공 :이 도움이

200 
200.00 

희망!

+0

이 코드를 사용해도 두 로그 모두 200 개가 반환됩니다. – icekomo

0

그건 정상입니다. 십진수 문자열에 분수가 포함되어 있지 않으면 인쇄되지 않습니다. 당신이 그들을 인쇄 할 경우 당신은 NSNumberFormatter를 사용하거나 부동 소수점으로 변환하고 그렇게 할 %.2f로 인쇄 할 수 있습니다 :

NSString *text = @"200.00"; 
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:text]; 
NSLog(@"%@", number); //this will print "200" 

//solution #1 
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
numberFormatter.numberStyle = NSNumberFormatterDecimalStyle; 
numberFormatter.minimumFractionDigits = 2; 
NSLog(@"%@", [numberFormatter stringFromNumber:number]); //this will print "200.00" 

//solution #2 
CGFloat number = [text floatValue]; 
NSLog(@"%.2f", number); //this will print "200.00" 
+0

나는 통화를 처리 할 때 수레에서 벗어나려고 노력하고 있습니다. 하지만 대답 주셔서 감사합니다! – icekomo

+0

솔루션 # 1은 부동 소수점없이 작동하지만 NSNumber와 함께 NSDecimalNumbers와 함께 작동합니다. 그것이 당신이 가야 할 길입니다. – Hannes