首先,我正在使用NSDecimalNumbers,因为我正在处理货币。我对十进制数字本身没有任何问题,我想知道是否可以同时乘以3 NSDecimalNumber(s)。

换句话说,如果我要乘以3的整数,我会简单地:

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

int x = a * b * c;

但是,为了乘以NSDecimalNumbers,您必须使用decimalNumberByMultiplyingBy method

使用此方法,我必须进行2次计算才能将3个NSDecimalNumbers相乘,如下所示:
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相乘,而不是用这种笨拙的方法?

最佳答案

没有答案。乘法是二进制运算。甚至

int x = a * b * c;

实际上涉及两个单独的乘法。由于采用了中缀符号,因此看起来不太笨拙。

你可以做
result = [[d1 decimalNumberByMultiplyingBy: d2] decimalNumberByMultiplyingBy: d3];

这相当于第一条陈述。

关于iphone - 同时相乘3个NSDecimalNumber,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9587548/

10-09 23:39