将NSDecimalNumber置为负数

Mac*_*rse 10 iphone objective-c nsdecimalnumber

我正在寻找一种NSDecimalNumber通过乘以负转的方法-1.

/* decNumber is the one I would like to turn negative */
NSDecimalNumber *decNumber = [values objectAtIndex:billIndex];

NSDecimalNumber *minusOne = [[NSDecimalNumber alloc] initWithInt: -1];
finalValue = [[NSDecimalNumber alloc] initWithDecimal: [[decNumber decimalNumberByMultiplyingBy: minusOne] decimalValue]];
Run Code Online (Sandbox Code Playgroud)

这有效,但感觉就像这么简单的逻辑太多了.你能想到更好的方法吗?

D.S*_*ley 16

您可以使用NSDecimalNumber >> decimalNumberWithMantissa:exponent:isNegative来更简洁地生成-1.

/* Answers (aDecimal x -1) */
NSDecimalNumber* negate(NSDecimalNumber *aDecimal) {
    return [aDecimal decimalNumberByMultiplyingBy:
                    [NSDecimalNumber decimalNumberWithMantissa: 1
                                                      exponent: 0
                                                    isNegative: YES]];
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么不使用`[NSDecimalNumber decimalNumberWithString:@" - 1"]`? (3认同)