README.md

# Currency

Currency is a library useful for dealing with ISO 4217 currency symbols,
that respects and enforces correct precision use, and can also perform basic
mathematical operations between sets of Currency structs.

## Usage

This library is intended to be used with textual representation of a currency.
For instance, you create an instance of `Currency` using an amount, and the
currency symbol, i.e., `USD` for US Dollar. These symbols correspond to ISO
4217.

```elixir
iex> Currency.new("15.99 USD")
~M"15.99 USD"
```

To access the `~M` sigil, simply `import Currency` wherever you intend to use
it.

This library also supports negative values, rounding extra bits of precision,
and simple operations like addition and subtraction. Consider:

```elixir
iex> import Currency
# Adding two currencies of the same type
iex> ~M"1.99 USD" |> Currency.add(~M"2.29 USD")
~M"4.28 USD"
# Subtracting...
iex> ~M"1.01 CAD" |> Currency.subtract(~M"4.77 CAD")
~M"-3.76 CAD"
# Rounding...
iex> ~M"1.234 USD"
~M"1.23 USD"
iex> ~M"1.236 USD"
~M"1.24 USD"
```

## Installation

This package can be installed by adding `currency` to your list of dependencies
in `mix.exs`:

```elixir
def deps do
  [
    {:currency, "~> 1.0.0"}
  ]
end
```

Documentation can be found at [https://hexdocs.pm/currency](https://hexdocs.pm/currency).