2010-03-16 5 views
2

데이터 유형이 decimalfloat 인 여러 데이터 유형을 저장하는 핵심 데이터 기반 앱이 있습니다. 계산을 실행하고 파생 된 숫자를 반환하는 일부 임시 속성/가상 접근자를 작성하고 있지만 NSDecimalNumber 곱셈이 작동하지 않는 것 같습니다.NSDecimal multiplication

왜이 작동하지 않습니다

- (NSDecimalNumber *)discountedPrice { 
return ([self.orderCost decimalNumberByMultiplyingBy:self.discountPercentage]); 
} 
// Error: Incompatible Objective-C types 'struct NSNumber *', expected 'struct NSDecimalNumber *' when passing argument 1 of 'decimalNumberByMultiplyingBy:' from distinct ... 

을이 수행 할 때 : 내 객체 데이터 모델에 지정된 저장소 유형에 관계없이 핵심 데이터에서 NSNumber를 얻을 수 있다고 가정

- (NSDecimalNumber *)orderCost { 
    return ([self.orderCost decimalNumberByAdding:self.taxes]); 
} 

, 그렇다면 왜이 토막은 어떻게 작동합니까? 나는 이것을 여기에서 완전히 오해하고 있는가?

감사합니다. -decimalNumberByMultiplyingBy:이 NSDecimalNumber을 기대하기 때문에

답변

3

당신은 문제가 실행하고 있지만 (나는 가정) 당신은 그것을 float 또는 double 값 (귀하의 할인 백분율)를 포함하는의 NSNumber를 전달하고 있습니다. 먼저 NSDecimalNumber를 빌드하십시오.

- (NSDecimalNumber *)discountedPrice { 
    NSDecimalNumber *dec = [NSDecimalNumber decimalNumberWithDecimal: 
           [self.discountPercentage decimalValue]]; 
    return ([self.orderCost decimalNumberByMultiplyingBy:dec]); 
}
관련 문제