2013-04-10 2 views
0

계산기 아이폰 앱을 만들려고 노력 중이며 선생님이 NSDecimalNumber를 사용해야한다고 말씀하셨습니다. 나는 그것으로 많은 문제를 겪고있다. 나는 그 부분의 추가 부분을 얻으려고 노력하고 있지만 33과 같이 1.24와 같은 숫자를 추가 할 때 문제가 있습니다. 결과가 34.24가되기를 원하면 34가됩니다. 아무도 그것을 이렇게 만드는 방법을 알고 있는가? 여기에 코드의 관련 부분이NSDecimalNumber 추가 소수점 이하 자릿수

-(void)outputNumber: (NSDecimalNumber*) number 
{ 
    //used to format number of decimal places 
    NSNumberFormatter* formatter = [[[NSNumberFormatter alloc] init] autorelease]; 
    [formatter setMaximumFractionDigits:self.afterDecimal]; 

    //output the number to calculator 
    NSString* formatNumber = [formatter stringFromNumber:[NSNumber numberWithDouble:[number doubleValue]]]; 
    self.inputLabel.text = [NSString stringWithFormat: @"%@", formatNumber]; 

    if (self.isWaiting == TRUE) { 
     self.numberB = number; 
     //change button title default color 
     [self.myButton setTitleColor:[UIColor colorWithRed:.196 green: .3098 blue: .52 alpha: 1] forState: 0]; 
    } 
    else { 
     self.numberA = number; 
    } 
} 
if (self.binaryTag == 6) { 
     self.numberC = [self.numberB decimalNumberByAdding: self.numberA]; 
    } 
+0

당신은 정말로 self.numberC가 NSDecimal입니까? –

+0

그것은 NSDecimalNumber입니다 ... 문제가 실제로 지금 보입니다 ... setMaximumFractionDigits입니다. 더 좋은 방법은 십진수 뒤에 모든 숫자를 가져 오는 것입니까? – user2264210

답변

0

사실 NSNumberFormatterNSDecimalNumber 제대로 작동하지 않는 것입니다. 먼저 모든 것을 double으로 변환합니다.

NSDecimalNumber을 사용할 때는 자체 메서드를 사용하여 반올림 한 다음 NSString으로 변환하십시오. NSNumberFormatter을 사용하면 정밀도가 떨어집니다.

+0

예, NSDecimalNumberHandler를 사용하려고했지만 어떤 이유로 작동하지 않았습니다. – user2264210

관련 문제