一种 Swift 中货币/金额的表示形式,以及 ISO 4217 货币代码。 支持对单一货币或多种货币的货币金额进行操作和组合。
根据 ISO 4217 标准,处理每种货币的最小单位(指数,例如美元的“分”)。 简单的操作包括合并/组合金额。
具有相同 Currency
的 MonetaryAmount
值将被加在一起,具有唯一 Currency
值的 MonetaryAmount
值将单独添加到结果中。
dependencies: [
.package(url: "https://github.com/SoftwareEngineerChris/MonetaryAmount.git", from: "1.1.0")
]
let moneyA = 12.00.in(.USD)
let moneyB = 18.00.in(.USD)
let moneyC = 6.00.in(.GBP)
// result would equal [30.00.in(.USD), 6.00.in(.GBP)]
let result = [moneyA, moneyB, moneyC].consolidating(moneyB)
金额的底层值由 DynamicRoundedDecimal
表示,它本身使用 Swift 的 Decimal
类型。 DynamicRoundedDecimal
根据给定货币的 minorUnit
声明在内部处理舍入。
// moneyA and moneyB are equal and represent US$28.53
let moneyA = MonetaryAmount(currency: Currency.USD, value: Decimal(string: "28.529372")!)
let moneyB = 28.53.in(.USD)
MonetaryAmount
不进行任何外汇或货币转换,它将每种货币的小计单独保存。