将 NSDecimalNumbers 转换为负数
Posted
技术标签:
【中文标题】将 NSDecimalNumbers 转换为负数【英文标题】:Convert NSDecimalNumbers to Negative 【发布时间】:2015-04-15 08:13:09 【问题描述】:快速开发预算应用程序。
本质上,有一个标签显示键盘文本输入到currencyStyle并显示这个数字(5.00美元),然后等待用户选择借记或取款。如果借记,数字会附加到表中,但是在提款(-)方面我迷路了。
我愿意
将格式化为货币的 NSDecimalNumber 转换为负数以附加到 tableView:字符串($5.00 到 -$5.00)。
将 NSDecimalNumber 值转换为负数并添加到 NSNumber 数组中,该数组存储要为可用余额(5.50 到 -5.50)计算的数字
对于这两者,我都尝试在 Apple 文档中使用 NSNumberFormatternegativePrefix 和其他一些属性,但无济于事。甚至尝试创建负 NSNumber 值 = -100.0,但应用程序在除法期间崩溃。
任何帮助将不胜感激。
【问题讨论】:
看看这个问题:***.com/questions/5057939/… decimalNumberWithMantissa 在 Swift 中是否有效?在 Xcode 或 Apple Swift 文档中找不到它... 您需要在 Swift 中像这样初始化 -1NSDecimalNumber
:NSDecimalNumber(mantissa: 1, exponent: 0, isNegative: true)
有道理!谢谢!
【参考方案1】:
要轻松否定NSDecimalNumber
,请在 Swift 中创建一个扩展,如下所示:
extension NSDecimalNumber
func negative() -> NSDecimalNumber
return self.decimalNumberByMultiplyingBy(NSDecimalNumber(mantissa: 1, exponent: 0, isNegative: true));
然后你可以像这样否定你的NSDecimalNumber
:
yourNumber = yourNumber.negative()
【讨论】:
谢谢!完美运行!【参考方案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
【讨论】:
太棒了!没想过简单地修改-操作符!【参考方案3】:你也可以从零中减去它自己的值并返回它,如下所示:
extension NSDecimalNumber
var negative: NSDecimalNumber NSDecimalNumber.zero.subtracting(self)
NSDecimalNumber(value: 15.6).negative // -15.6
【讨论】:
以上是关于将 NSDecimalNumbers 转换为负数的主要内容,如果未能解决你的问题,请参考以下文章
从 NSDecimalNumber 中删除负号 (-) 给我一个错误