货币金额 (MonetaryAmount)

Build Status Docs SPM

一种 Swift 中货币/金额的表示形式,以及 ISO 4217 货币代码。 支持对单一货币或多种货币的货币金额进行操作和组合。

根据 ISO 4217 标准,处理每种货币的最小单位(指数,例如美元的“分”)。 简单的操作包括合并/组合金额。

具有相同 CurrencyMonetaryAmount 值将被加在一起,具有唯一 Currency 值的 MonetaryAmount 值将单独添加到结果中。

安装

Swift 包管理器 (Swift Package Manager)

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 不进行任何外汇或货币转换,它将每种货币的小计单独保存。

另请参阅

ISO 4217 的维基百科条目