RDHDecimalNumberOperations 2.0.2

RDHDecimalNumberOperations 2.0.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2016年2月
SPM支持 SPM

Rich Hodgkins 维护。



RDHDecimalNumberOperations

安装

使用 Cocoapods(使用 Swift 的测试版)

pod 'RDHDecimalNumberOperations', '2.0.0'

Carthage 也得到支持。

或者,只需将 RDHDecimalNumberOperations.swift 添加到您的项目即可。

运算符

支持所有标准运算符(对于新的 Swift 运算符,请参阅 溢出

  • +
  • -
  • *
  • /
  • +=
  • -=
  • *=
  • /=
  • ++(作为前缀和后缀)
  • --(作为前缀和后缀)
  • ==
  • !=
  • >
  • >=
  • <
  • <=

还有幂运算符

  • ** - 将 NSDecimalNumber 作为一个 Int 指数的幂
  • **= - 在原地将 NSDecimalNumber 作为一个 Int 指数的幂

:+ 和 :- 的单子形式都工作正常

let two = NSDecimalNumber(string: "2")
let minusTwo = -two

溢出

Swift 中还引入了溢出运算符,这些运算符也被支持以防止溢出、下溢、精度损失和更常见的除以零引发的异常。

  • &+
  • &-
  • &*
  • &/
  • &**(与一个 Int 指数一起)

这意味着下面的代码将 引发异常,而是返回 NSDecimalNumber.notANumber()

let notANumber = NSDecimalNumber.one() / NSDecimalNumber.zero()

便利性

除了运算符支持之外,还增加了一种从 String 获取 NSDecimalNumber 的便利方法。

let numberFromString = "1".decimalValue

不要忘记,您已经可以利用 IntegerLiteralConvertible(从 NSNumber 继承而来)了

let numberFromInt: NSDecimalNumber = 10

四舍五入

已向 NSRoundingMode 枚举添加了四舍五入方法

let twoThirds = NSDecimalNumber(string: "2") / NSDecimalNumber(string: "3")
let roundedNumber = NSRoundingMode.RoundUp.round(twoThirds, scale: 0)
println("\(twoThirds) rounded up to \(roundedNumber)")

为了更快、更容易地进行四舍五入,已添加了一个操作符 ~

let twoThirds = NSDecimalNumber(string: "2") / NSDecimalNumber(string: "3")
let roundedNumber = twoThirds ~ (roundingMode: NSRoundingMode.RoundUp, scale: 0)
println("\(twoThirds) rounded up to \(roundedNumber)")

并且对于就地四舍五入

let twoThirds = NSDecimalNumber(string: "2") / NSDecimalNumber(string: "3")
var roundedNumber = twoThirds
roundedNumber ~= (NSRoundingMode.RoundUp, 0)
println("\(twoThirds) rounded up to \(roundedNumber)")

输出

0.6666 rounded up to 1