测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2016年2月 |
SPM支持 SPM | ✗ |
由 Rich Hodgkins 维护。
String
创建abs()
,isNaN()
方法minusOne
类型的 var
使用 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