softwareengineerchris/monetaryamount
A Swift representation of money / monetary amounts and _ISO 4217_ currency designations. Supports manipulation
Installation
Swift Package Manager
dependencies: [
.package(url: "https://github.com/SoftwareEngineerChris/MonetaryAmount.git", from: "1.1.0")
]Usage Example
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)The underlying value for the amount is represented by a DynamicRoundedDecimal which itself uses the Swift Decimal type. DynamicRoundedDecimal handles rounding internally as declared by the given currency's minorUnit.
Construction
// 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)Note
MonetaryAmount does not do any FX or conversion of currencies, it keeps each individual currency subtotal separate.
See Also
Package Metadata
Repository: softwareengineerchris/monetaryamount
Default branch: master
README: README.md