blob: 3dd777e602388d537779e44a58a70f294c00905c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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.newRaw(num + String.to_integer(v), den)
else
acc
end
end)
|> Rational.simplify()
end
end
|