lib/ratio/decimal_conversion.ex
if Code.ensure_loaded?(Decimal) do
defmodule Ratio.DecimalConversion do
def decimal_to_rational(%Decimal{coef: coef, exp: 0, sign: sign}) do
numerator = coef * sign
Ratio.new(numerator)
end
def decimal_to_rational(%Decimal{coef: coef, exp: exp, sign: sign}) do
numerator = coef * sign
denominator = Ratio.pow(Ratio.new(10), exp * -1)
Ratio.new(numerator, denominator)
end
end
end