A Swift representation of money / monetary amounts and ISO 4217 currency designations. Supports manipulation and combination of monetary amounts of a single currency or multiple currencies.
Handles minor units (the exponent, e.g. cents for USD) for each currency as specified in the ISO 4217 standard. Simple manipulation includes consolidating / combining amounts.
MonetaryAmount values that have the same
Currency will be added together,
MonetaryAmount values with
Currency values will be added to the result on their own.
pod 'MonetaryAmount', '~> 1.1.0'
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)
The underlying value for the amount is represented by a
itself uses the Swift
DynamicRoundedDecimal handles rounding internally
as declared by the given currency's
// 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 does not do any FX or conversion of currencies, it keeps each individual
currency subtotal separate.