jhi*_*t00 1 iphone xcode objective-c nsdecimalnumber ios
首先,我正在使用NSDecimalNumbers,因为我正在处理货币.我对十进制数字本身没有任何问题,我想知道是否可以同时乘以3个NSDecimalNumber(s).
换句话说,如果我乘以3个整数,我会简单地说:
int a = 2;
int b = 5;
int c = 7;
int x = a * b * c;
Run Code Online (Sandbox Code Playgroud)
但是,为了乘以NSDecimalNumbers,您必须使用该decimalNumberByMultiplyingBy 方法.
使用这种方法,我必须进行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);
Run Code Online (Sandbox Code Playgroud)
有没有办法同时将所有3个NSDecimalNumbers乘以而不是这种笨重的方式呢?
答案不是.乘法是二元运算.甚至
int x = a * b * c;
Run Code Online (Sandbox Code Playgroud)
实际上涉及两个单独的乘法.由于中缀符号,它看起来不那么笨重.
你可以做
result = [[d1 decimalNumberByMultiplyingBy: d2] decimalNumberByMultiplyingBy: d3];
Run Code Online (Sandbox Code Playgroud)
这相当于第一个陈述.
| 归档时间: |
|
| 查看次数: |
1288 次 |
| 最近记录: |