Cldr.Number.Parser.parse
parse
, go back to Cldr.Number.Parser module for more information.
Parse a string locale-aware manner and return a number.
Arguments
string
is anyString.t
options
is a keyword list of options
Options
:number
is one of:integer
,:float
,:decimal
ornil
. The default isnil
meaning that the type auto-detected as either aninteger
or afloat
.:backend
is any module that includesuse Cldr
and is therefore a CLDR backend module. The default isCldr.default_backend/0
.:locale
is any locale returned byCldr.known_locale_names/1
or aCldr.LanguageTag.t
. The default isoptions[:backend].get_locale/1
.
Returns
A number of the requested or default type or
{:error, string}
if no number could be determined
Notes
This function parses a string to return a number but
in a locale-aware manner. It will normalise grouping
characters and decimal separators, different forms of
the +
and -
symbols that appear in Unicode and
strips any _
characters that might be used for
formatting in a string. It then parses the number
using the Elixir standard library functions.
Examples
iex> Cldr.Number.Parser.parse("+1.000,34", locale: "de")
{:ok, 1000.34}
iex> Cldr.Number.Parser.parse("-1_000_000.34")
{:ok, -1000000.34}
iex> Cldr.Number.Parser.parse("1.000", locale: "de", number: :integer)
{:ok, 1000}
iex> Cldr.Number.Parser.parse("+1.000,34", locale: "de", number: :integer)
{:error, "+1.000,34"}