View Source BetterNumber.Currency (better_number v1.0.1)

Provides functions for converting numbers into formatted currency strings.

Summary

Functions

Converts a number to a formatted currency string.

Functions

Link to this function

number_to_currency(number, options \\ [])

View Source
@spec number_to_currency(BetterNumber.t(), Keyword.t() | map()) :: String.t()

Converts a number to a formatted currency string.

## Parameters

  • number - A float or integer to convert.

  • options - A keyword list of options. See the documentation of all available options below for more information.

## Options

  • :unit - The currency symbol to use. Default: "$"

  • :precision - The number of decimal places to include. Default: 2

  • :delimiter - The character to use to delimit the number by thousands. Default: ","

  • :separator - The character to use to separate the number from the decimal places. Default: "."

  • :format - Function which converts number and unit to the final string. Default: fn unit, number -> unit <> number end

  • :negative_format - The format of the number when it is negative. Uses the same formatting placeholders as the :format option. Default value is derived from :format option just with "-" prefix.

  • :trim_zero_fraction - Whether to trim the zeroes in fraction part of number. Default: "false"

## Examples

  iex> number_to_currency(nil)
  nil

  iex> number_to_currency(1000)
  "$1,000.00"

  iex> number_to_currency(1000, unit: "£")
  "£1,000.00"

  iex> number_to_currency(-1000)
  "-$1,000.00"

  iex> number_to_currency(-234234.23)
  "-$234,234.23"

  iex> number_to_currency(1234567890.50)
  "$1,234,567,890.50"

  iex> number_to_currency(1234567890.506)
  "$1,234,567,890.51"

  iex> number_to_currency(1234567890.506, precision: 3)
  "$1,234,567,890.506"

  iex> number_to_currency(-1234567890.50, negative_format: &"(#{&1}#{&2})")
  "($1,234,567,890.50)"

  iex> number_to_currency(1234567890.50, unit: "R$", separator: ",", delimiter: "")
  "R$1234567890,50"

  iex> number_to_currency(1234567890.50, unit: "R$", separator: ",", delimiter: "", format: &"#{&2} #{&1}")
  "1234567890,50 R$"

  iex> number_to_currency(Decimal.from_float(50.0))
  "$50.00"

  iex> number_to_currency(Decimal.from_float(-100.01))
  "-$100.01"

  iex> number_to_currency(Decimal.from_float(-100.01), unit: "$", separator: ",", delimiter: ".", negative_format: &"- #{&1} #{&2}")
  "- $ 100,01"