2012-09-16 3 views

답변

3

의미 float는 0 자릿수입니다. 당신이 여전히 정밀도를 필요로 보인다으로

편집

, 당신은 훨씬 더 융통성있는 NSNumberFormatter 인스턴스를 사용해야합니다.

당신은이 -setMinimumFractionDigits:-setMaximumFractionDigits:, 그래서 제로 0 될 것입니다 사용할 수 있지만, 당신은 여전히 ​​정밀이 할 수 있습니다 : 당신은 형식 문자열에 소수 자릿수의 수를 제한 할 수 있습니다

NSNumberFormatter * fmt; 

fmt = [ [ NSNumberFormatter new ] autorelease ]; 

[ fmt setMinimumFractionDigits: 0 ]; 
[ fmt setMaximumFractionDigits: 2 ]; 
[ fmt setMinimumIntegerDigits: 1 ]; 

NSLog(@"%@", [ fmt stringFromNumber: [ NSNumber numberWithFloat: (float)0 ] ]); 
NSLog(@"%@", [ fmt stringFromNumber: [ NSNumber numberWithFloat: (float)0.42 ] ]); 
+0

여전히 소수점 이하 자릿수를 표시해야합니다. 분수를 잘라도이 문제는 해결되지 않습니다. – amirfl

+0

편집을 참조하십시오 ... – Macmade

+0

감사합니다, NSNumberFormatter를 약간 다른 방식으로 사용했습니다 (다시 말하면, 정밀도를 제한하려고하지는 않습니다). NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; myTextField.text = [formatter stringFromNumber:[NSNumber numberWithDouble:self.myDoubleValue]]; 이제 역 변환을 수행하는 방법을 찾으려고합니다. 2,000,000.45와 같은 문자열에서 두 배로. (서식을 제거하기 위해 직접 메서드를 만들어야합니까? 아니면 코코아에 기존 메서드가 있습니까?) 도움을 주셔서 감사합니다. – amirfl

0

:

%.0f 

정수로 반올림합니다,

%.1f 

은 십진수 1로 반올림하고, -0을 -0 또는 -0.0으로 인쇄합니다.

+0

필자는 여전히 십진법 정밀도를 유지해야하지만, 오른쪽에 불필요한 0이, 값이 0이면 '-'가, 값이 0이면 깨끗하게 정리해야합니다. 분수가없는 경우 – amirfl

관련 문제