2012-07-19 5 views
1

나는 이런 질문을하지 말아야한다는 것을 알고 있습니다. 그러나, 나는 단서없이 여기에서 찔 렸다. 그래서, 나는 정말로 도움이 필요하다.NSDecimalNumber에 NSDecimalNumber를 곱하면 0을 반환합니다.

제품을 예로 들어 보겠습니다.

// 제품
NSDecimalNumber * 수량
NSDecimalNumber의 * 가격

난 할 노력하고있어하면 가격을 요약하고 라벨로 설정합니다. 내가 검색하고 여기에 NSDecimalNumber는 실제 값을 감싸는 객체이므로 표준 일치 작업을 수행 할 수 없다는 메시지가 있습니다. decimalNumberByAddingdecimalNumberByMultiplyingBy을 통해 수행해야합니다. 그래서, 다음 코드를 작성했습니다 :

NSDecimalNumber *totalPrice = [[NSDecimalNumber alloc] initWithDouble:0.0]; 
[self.productArray enumerateObjectsUsingBlock:^(Product *product, NSUInteger idx, BOOL *stop) { 
    [totalPrice decimalNumberByAdding:[product.price decimalNumberByMultiplyingBy:product.quantity]]; 
    NSLog(@"%@", totalPrice); 
    NSLog(@"%@", totalPrice.doubleValue); 
    NSLog(@"%@", totalPrice.decimalValue); 
}]; 

NSLog가 올바른 결과를 보이지 않았습니다. 0 또는 NULL을 표시하지 않았습니다.

그러나 NSLog에 다음 코드를 입력하면 올바른 결과가 표시 될 수 있습니다.

[product.price decimalNumberByMultiplyingBy:product.quantity] 

여기서 내가 무엇을 놓칠 지 알려줄 수 있습니까?

+1

0을 곱하지 않는지 확인하십시오. 그들을 사용하기 전에 귀하의 초기 값을 NSLog하십시오. –

답변

6

반환 값을 지정하지 않았습니다.

[totalPrice decimalNumberByAdding:[product.price decimalNumberByMultiplyingBy:product.quantity]]; 

은 다음과 같아야합니다

totalPrice = [totalPrice decimalNumberByAdding:[product.price decimalNumberByMultiplyingBy:product.quantity]]; 

decimalNumberByAdding가 값을 반환하기 때문에이 자동으로 변수를 업데이트하지 않습니다. 이 때문에 totalPrice는 항상 0이며, 이는 init에서 지정한 값입니다.

관련 문제