2012-03-06 2 views
1

먼저 통화를 처리하기 때문에 NSDecimalNumbers를 사용하고 있습니다. 10 진수 자체에 문제가있는 것은 아니며 동시에 3 개의 NSDecimalNumber (s)를 곱하는 것이 가능한지 알고 싶습니다. 즉동시에 3 개의 NSDecimalNumber 곱하기

, 나는 단순히 것 3 개 정수를 곱하여 경우 :

int a = 2; 
int b = 5; 
int c = 7; 

int x = a * b * c; 

그러나 NSDecimalNumbers을 증식하기 위해 당신이 decimalNumberByMultiplyingBymethod를 사용하도록 강요하고 있습니다.

NSDecimalNumber *d1 = [NSDecimalNumber decimalNumberWithString:@"1.502"]; 
NSDecimalNumber *d2 = [NSDecimalNumber decimalNumberWithString:@"12.472"]; 
NSDecimalNumber *d3 = [NSDecimalNumber decimalNumberWithString:@"0.765"]; 

//Calculation 
NSDecimalNumber *initialValue = [d1 decimalNumberByMultiplyingBy:d2]; 
NSDecimalNumber *finalValue = [initialValue decimalNumberByMultiplyingBy:d3]; 

//Formatting 
NSString *output = [NSString stringWithFormat:@"%@", finalValue]; 
NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:output]; 

//r is my NSNumberFormatter, which I've configured elsewhere 
NSString *s = [r stringFromNumber:n]; 

NSLog(@"%@",s); 

동시에 3 NSDecimalNumbers을 증식 할 수있는 방법이 있나요 :

이 방법을 사용하여, 내가 다루고있어 3 NSDecimalNumbers을 곱과 같이하기 위해이 계산을 할 필요가 그 주위에이 멍청한 길 대신에?

답변

8

없음 대답이다. 곱셈은 ​​2 진 연산입니다. 짝수 :

int x = a * b * c; 

실제로 두 개의 별도 승산이 필요합니다. 중절 표기법으로 인해 덜 어색해 보입니다.

당신은 첫 번째 문에 해당합니다

result = [[d1 decimalNumberByMultiplyingBy: d2] decimalNumberByMultiplyingBy: d3]; 

을 할 수 있습니다.

+0

감사합니다. 그게 정확히 내가 찾고 있던 것이 었습니다. – jhilgert00

0

NSDecimalNumber 곱셈 메서드를 캡슐화하고 3 개의 NSDecimalNumber 인수를 사용하여 NSDecimalNumber를 반환하는 도우미 메서드를 작성하십시오.

+3

더 나은 것은 배열의 모든 숫자 나 가변 인자 목록의 모든 숫자를 곱하는 방법입니다. – JeremyP

1

인근 Mac을 사용하지 마십시오,하지만 난 당신이 그런 식으로 그것을 할 수 있다고 생각 :

NSDecimalNumber *d1 = [NSDecimalNumber decimalNumberWithString:@"1.502"]; 
NSDecimalNumber *d2 = [NSDecimalNumber decimalNumberWithString:@"12.472"]; 
NSDecimalNumber *d3 = [NSDecimalNumber decimalNumberWithString:@"0.765"]; 

//Calculation 
NSDecimalNumber *finalValue = [[d1 decimalNumberByMultiplyingBy:d2] decimalNumberByMultiplyingBy:d3];