将 NSDecimalNumbers 转换为负数

Convert NSDecimalNumbers to Negative

在 swift 开发预算应用程序。

本质上,有一个标签显示键盘 textInput 到 currencyStyle 并显示这个数字 ($5.00),然后等待用户选择借记或取款。如果是借方,数字会附加到 Table,但是当涉及到 Withdraw(-) 时我就迷路了。

我愿意

  1. 将格式为货币的 NSDecimalNumber 转换为负数以附加到 tableView:String ($5.00 to -$5.00).

  2. 将 NSDecimalNumber 值转换为负数并添加到 NSNumber 数组,该数组存储要为可用余额(5.50 到 -5.50)计算的数字

对于这两者,我都尝试过使用 NSNumberFormatter negativePrefix 和 Apple 文档中的一些其他属性,但均无济于事。甚至尝试创建负 NSNumber 值 = -100.0,但应用程序在除法期间崩溃。

如有任何帮助,我们将不胜感激。

为了轻松否定 NSDecimalNumber 在 Swift 中创建扩展,如下所示:

extension NSDecimalNumber {
    func negative() -> NSDecimalNumber {
        return self.decimalNumberByMultiplyingBy(NSDecimalNumber(mantissa: 1, exponent: 0, isNegative: true));
    }
}

然后您可以像这样否定您的 NSDecimalNumber

yourNumber = yourNumber.negative() 

你也可以从零减去它自己的值然后return它如下:

extension NSDecimalNumber {
    var negative: NSDecimalNumber { NSDecimalNumber.zero.subtracting(self) }
}

NSDecimalNumber(value: 15.6).negative  // -15.6

您可以覆盖 - 运算符。例如:

prefix func -(number: NSDecimalNumber) -> NSDecimalNumber {
    return number.decimalNumberByMultiplyingBy(NSDecimalNumber(mantissa: 1, exponent: 0, isNegative: true))
}

然后您可以像这样使用它:

let number = NSDecimalNumber(double: 5.00)
let negativeNumber = -number