将NSDecimalNumber转换为负数

时间:2015-04-15 08:13:10

标签: swift ios8 nsnumberformatter nsdecimalnumber

在swift中使用预算应用。

基本上,有一个标签显示键盘textInput到currencyStyle并显示此数字($ 5.00),然后等待用户选择Debit或Withdraw。如果是借记,则数字附加到表格,但是当涉及到提款( - )时我就丢失了。

我想

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

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

  3. 对于我已经尝试过使用NSNumberFormatter negativePrefix和Apple文档中的一些其他属性都无济于事。甚至尝试创建负NSNumber值= -100.0,但应用程序在分割期间崩溃。

    任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

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

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

然后您可以这样使用:

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

答案 1 :(得分:1)

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

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

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

yourNumber = yourNumber.negative() 

答案 2 :(得分:1)

您也可以从零中减去自己的值并按以下方式返回:

extension NSDecimalNumber {
    var negative: NSDecimalNumber {
        return NSDecimalNumber(integer: 0).decimalNumberBySubtracting(self)
    }
}

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