Packages
stellar_sdk
0.11.8
0.23.0
0.22.0
0.21.2
0.21.1
0.21.0
0.20.0
0.19.0
0.18.1
0.18.0
0.17.1
0.17.0
0.16.1
0.16.0
0.15.1
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Elixir SDK for the Stellar network.
Current section
Files
Jump to
Current section
Files
lib/tx_build/utils.ex
defmodule Stellar.TxBuild.Utils do
@moduledoc """
TxBuild utils functions.
"""
@type fraction :: {integer(), integer()}
@spec number_to_fraction(number :: number()) :: fraction()
def number_to_fraction(number) when is_integer(number), do: {number, 1}
def number_to_fraction(number) when is_float(number) do
precision = float_precision(number)
base = :math.pow(10, precision) |> trunc()
numerator = trunc(number * base)
denominator = 1 * base
gcd = Integer.gcd(numerator, denominator)
{div(numerator, gcd), div(denominator, gcd)}
end
@spec float_precision(number :: float()) :: integer()
defp float_precision(number) do
number
|> Float.to_string()
|> String.split(".")
|> List.last()
|> String.length()
end
end