Skip to content

Commit 9a3457d

Browse files
committed
Support exponential notation for Money.parse
1 parent 05cb9fc commit 9a3457d

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

lib/money.ex

+6
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,12 @@ defmodule Money do
204204
defp prepare_parse_string(["9" | tail], delimiter, acc),
205205
do: prepare_parse_string(tail, delimiter, ["9" | acc])
206206

207+
defp prepare_parse_string(["e" | tail], delimiter, acc),
208+
do: prepare_parse_string(tail, delimiter, ["e" | acc])
209+
210+
defp prepare_parse_string(["E" | tail], delimiter, acc),
211+
do: prepare_parse_string(tail, delimiter, ["E" | acc])
212+
207213
defp prepare_parse_string([delimiter | tail], delimiter, acc),
208214
do: prepare_parse_string(tail, delimiter, ["." | acc])
209215

test/money_test.exs

+3
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ defmodule MoneyTest do
3838
assert Money.parse("$- 1,000.00", :USD) == {:ok, usd(-100_000)}
3939
assert Money.parse("-1000.0", :USD) == {:ok, usd(-100_000)}
4040

41+
assert Money.parse("5.0e3", :USD) == {:ok, usd(500_000)}
42+
assert Money.parse("500e-3", :USD) == {:ok, usd(50)}
43+
4144
assert Money.parse(Decimal.from_float(-1000.0), :USD) == {:ok, usd(-100_000)}
4245
assert Money.parse(Decimal.from_float(4000.765), :USD) == {:ok, usd(4000_77)}
4346

0 commit comments

Comments
 (0)