我正在寻找一种通过乘以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]];
这样可行,但感觉就像这么简单的逻辑太多了。你能想到一个更好的方法来实现这个目标吗?
答案 0 :(得分:15)
您可以使用NSDecimalNumber>>decimalNumberWithMantissa:exponent:isNegative更简洁地生成-1。
/* Answers (aDecimal x -1) */
NSDecimalNumber* negate(NSDecimalNumber *aDecimal) {
return [aDecimal decimalNumberByMultiplyingBy:
[NSDecimalNumber decimalNumberWithMantissa: 1
exponent: 0
isNegative: YES]];
}
答案 1 :(得分:3)
类似于D.Shawley的回答,但延伸和迅捷的风格。
extension NSDecimalNumber {
/* Answers (aDecimal x -1) */
func decimalNumberByNegating() -> NSDecimalNumber {
return self.decimalNumberByMultiplyingBy(NSDecimalNumber(mantissa: 1, exponent: 0, isNegative: true));
}
}
答案 2 :(得分:0)
使用桥as
extension NSDecimalNumber {
func decimalNumberByNegating() -> NSDecimalNumber {
return -(self as Decimal) as NSDecimalNumber
}
}