まず、通貨を扱っているので NSDecimalNumbers を使用しています。10 進数自体に問題はありません。同時に 3 つの NSDecimalNumber(s) を乗算できるかどうかを知りたいです。
言い換えれば、3 つの整数を乗算する場合、単純に次のようにします。
int a = 2;
int b = 5;
int c = 7;
int x = a * b * c;
ただし、 NSDecimalNumbers を乗算するには、decimalNumberByMultiplyingBy
メソッドを使用する必要があります。
このメソッドを使用すると、扱っている 3 つの NSDecimalNumbers を乗算するために、次のように 2 つの計算を行う必要があります。
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 をすべて同時に乗算する方法はありますか?