swift - 扩展 Decimal 以使用舍入(根据 ToBehavior :)

标签 swift math

我在 Swift 中处理 Decimal 类型的数字。我想对我的数字使用 rounding(accordingToBehavior:),为此我相信我需要编写 Decimal 的扩展以使用 NSDecimalNumber< 的这种方法。我不确定该怎么做,因为我以前从未写过扩展。有什么想法吗?

最佳答案

你有没有尝试过这样的事情。

let testingNSDecimalNumber: NSDecimalNumber = 8.765 
let numberHandler = NSDecimalNumberHandler(roundingMode: .plain, scale: 2, raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: false)
let roundedDecimalNumber = testingNSDecimalNumber.rounding(accordingToBehavior: numberHandler)

如果你想创建 NSDecimalNumberextension 那么你可以这样尝试。

extension NSDecimalNumber {
    func makeRoundingNumber(with scale: Int16) -> NSDecimalNumber {
        let numberHandler = NSDecimalNumberHandler(roundingMode: .plain, scale: scale, raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: false)
        return self.rounding(accordingToBehavior: numberHandler)
    }
}

现在以这种方式调用这个扩展的方法。

let testingNSDecimalNumber: NSDecimalNumber = 8.765
print(testingNSDecimalNumber.makeRoundingNumber(with: 2))

编辑:对于您的评论 如果 var testingDecimalNumber: Decimal = 8.765 是 Decimal 我无法调用 .rounding(accordingToBehavior:) 您可以这样尝试。

extension Decimal {
    func makeRoundingNumber(with scale: Int16) -> NSDecimalNumber {
        let numberHandler = NSDecimalNumberHandler(roundingMode: .plain, scale: scale, raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: false)
        return NSDecimalNumber(decimal: self).rounding(accordingToBehavior: numberHandler)
    }
}

现在这样调用它。

var testingDecimalNumber: Decimal = 8.765
print(testingDecimalNumber.makeRoundingNumber(with: 2))

关于swift - 扩展 Decimal 以使用舍入(根据 ToBehavior :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41300762/

相关文章:

math - 如何摆脱 CORDIC 中的比例因子

javascript - 为什么我的抵押贷款计算器显示的小数点位置不正确?

c - 舍入到最接近的 1/16 并截断到 C 中值的最接近的 1/16

swift - 如何使用 dispatchQueue 创建引用循环?

xcode - rangeOfString 每次都不返回 nil

ios - 快速 Split View Controller 显示详细 View ,即使它是空的

TableView 单元格项的 iOS 不同 View

ios - NSTimer 和动画同步

Python:查找列表中的所有加法逆对并删除它们

math - 如何使用 4d 转子