Contents

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

Wikipedia Entry for ISO 4217

Package Metadata

Repository: softwareengineerchris/monetaryamount

Default branch: master

README: README.md