Iphone 同时乘以3位小数

Iphone 同时乘以3位小数,iphone,objective-c,ios,xcode,nsdecimalnumber,Iphone,Objective C,Ios,Xcode,Nsdecimalnumber,首先,我使用小数,因为我处理的是货币。我对十进制数本身没有任何问题,我想知道是否有可能同时乘以3个十进制数 换句话说,如果我乘以3个整数,我只会: int a = 2; int b = 5; int c = 7; int x = a * b * c; 但是,为了将NSDecimalNumbers相乘,必须使用decimalNumberByMultiplyingBy 使用这种方法,我必须进行2次计算,以便将我正在处理的3个小数相乘,如下所示: NSDecimalNumber *d1 = [NS

首先,我使用小数,因为我处理的是货币。我对十进制数本身没有任何问题,我想知道是否有可能同时乘以3个十进制数

换句话说,如果我乘以3个整数,我只会:

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

int x = a * b * c;
但是,为了将NSDecimalNumbers相乘,必须使用
decimalNumberByMultiplyingBy

使用这种方法,我必须进行2次计算,以便将我正在处理的3个小数相乘,如下所示:

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个NSDecimalNumber相乘,而不是以这种笨拙的方式相乘?

只需编写一个助手方法,封装NSDecimalNumber相乘方法并获取3个NSDecimalNumber参数并返回一个NSDecimalNumber

只需编写一个helper方法,该方法封装NSDecimalNumber乘法方法,并获取3个NSDecimalNumber参数并返回一个NSDecimalNumber

附近没有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];

附近没有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];

答案是否定的。乘法是一种二进制运算。甚至

int x = a * b * c;
实际上包含两个独立的乘法。由于中缀符号,它看起来不那么笨重

你能行

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

这相当于第一句话。

答案是否定的。乘法是一种二进制运算。甚至

int x = a * b * c;
实际上包含两个独立的乘法。由于中缀符号,它看起来不那么笨重

你能行

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

这相当于第一条语句。

最好是将数组中的所有数字或可变参数列表中的所有数字相乘。最好是将数组中的所有数字或可变参数列表中的所有数字相乘。谢谢。那正是我想要的。谢谢。这正是我想要的。