2014-05-21 4 views
0

NSNumberFormatter이 필요한 간단한 응용 프로그램을 만들고 있습니다. 나는이 숫자 다음 코드를 사용하여 소수점 이하 2 자리에서 반올림 얻기 위해 노력하고 있어요 : 나는 완전히이 이유에로 난처한 상황에 빠진NSNumberFormatter 형식이 올바르지 않습니다.

123.12345 

그러나

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
formatter.locale = [NSLocale currentLocale]; 
formatter.formatterBehavior = NSNumberFormatterBehaviorDefault; 
formatter.numberStyle = NSNumberFormatterDecimalStyle; 
formatter.usesSignificantDigits = NO; 

formatter.maximumFractionDigits = 2; 
NSLog(@"%@",[formatter numberFromString:@"123.12345"]); 

, 로그 출력으로 나온다 사고.

답변

2
NSNumber *num = [formatter numberFromString:@"123.12345"]; 
NSLog(@"num: %@", num); 

문자열 값에서 NSNumber을 생성했습니다. NSNumber에는 서식이없고 값만 있습니다. NSNumber@123.12345과 같이 여러 가지 방법으로 만들 수 있습니다.

이제 NSNumber에서 원하는 형식과 NSString를 만들 :

NSString *strNum = [formatter stringFromNumber:@123.12345]; 
NSLog(@"strNum: %@", strNum); 

NSLog 출력 :

NUM : 123.12345
strNum : 123.12

+0

감사합니다! 그게 효과가 있었어. 그러나 숫자 서식을 지정하고 번호를 유지하려면 'myNumber = [formatter numberFromString : [formatter stringFromNumber : myNumber]];'를 사용하는 것이 좋습니다. –

+1

NSNumbers는 표시 형식이 없으며 부동 소수점 또는 정수 값입니다. 내부적으로 저장되는 방법조차 모릅니다. 'NSNu를 표시하고 싶을 때마다, 그녀는'stringWithFormat :'이 제공하는 더 많은 형식화가 필요하다면 NSNumberFormatter를 사용합니다. – zaph

관련 문제