From 96299cbf09bdb75e4d6c6849c9c4c3ce000a6fc5 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Mon, 10 Nov 2025 12:27:21 +0100 Subject: feat(parser): supports literal decimal numbers --- lib/math/conversion.ex | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 lib/math/conversion.ex (limited to 'lib/math/conversion.ex') diff --git a/lib/math/conversion.ex b/lib/math/conversion.ex new file mode 100644 index 0000000..65ddf8f --- /dev/null +++ b/lib/math/conversion.ex @@ -0,0 +1,18 @@ +defmodule ElixirMathParser.Math.Conversion do + alias ElixirMathParser.Math.Rational + + def literal_float_to_rational(value) do + {int, dec} = Integer.parse(value) + + String.graphemes(dec) + |> Enum.reduce(Rational.new(int), fn v, acc -> + if v != "." do + num = Rational.numerator(acc) * 10 + den = Rational.denominator(acc) * 10 + Rational.new(num + String.to_integer(v), den) + else + acc + end + end) + end +end -- cgit v1.2.3