Elixir - 将float转换为字符串

sat*_*sat 9 elixir

我试图弄清楚如何将浮点数转换为字符串/二进制,但似乎并不像它看起来那么容易

iex(1)> to_string(1200.00)
"1.2e3"

iex(2)> Float.to_string(1200.00)
"1.2e3"
Run Code Online (Sandbox Code Playgroud)

我们需要"1200.00"出来......只是不是指数表示法

spl*_*tte 14

如果没有关于您的用例的更多详细信息,这将为您提供所需的结果:

iex(1)> Float.to_string(1200.00, decimals: 2)
"1200.00"
Run Code Online (Sandbox Code Playgroud)

它正在使用erlang float_to_binary/2,并将在elixir 1.4(https://github.com/elixir-lang/elixir/blob/v1.3.2/lib/elixir/lib/float.ex#L225)中弃用:

def to_string(float, options) do
    :erlang.float_to_binary(float, expand_compact(options))
end
Run Code Online (Sandbox Code Playgroud)

  • @splatte在那种情况下我会说你可能想要编辑你的答案以包含当前调用的Erlang函数,因为这是将来需要调用它的方式:`:erlang.float_to_binary(1200.00,小数) :2)`. (4认同)
  • 它有点隐藏,很快就会被弃用:https://github.com/elixir-lang/elixir/blob/v1.3.2/lib/elixir/lib/float.ex#L225可能是由于对精确继承的担忧在花车里.根据用例,此库https://github.com/ericmj/decimal可能相关 (2认同)