【问题标题】:Elixir - Convert float to stringElixir - 将浮点数转换为字符串
【发布时间】:2019-04-12 11:29:14
【问题描述】:

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

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

iex(2)> Float.to_string(1200.00)
"1.2e3"

我们需要 "1200.00" 出来......只是不是在指数符号中

【问题讨论】:

    标签: elixir


    【解决方案1】:

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

    iex(1)> Float.to_string(1200.00, decimals: 2)
    "1200.00"
    

    它使用 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
    

    在 elixir 1.8 中,还有Float.to_string/1Float.to_string/2 已弃用,建议直接使用:erlang.float_to_binary/2

    【讨论】:

    • 这是否记录在任何地方?我看到的只是Float.to_string/1
    • 它有点隐藏并且很快就会被弃用:github.com/elixir-lang/elixir/blob/v1.3.2/lib/elixir/lib/… 可能是由于担心浮点数中的精度继承。根据用例,这个库github.com/ericmj/decimal 可能相关
    • @splatte 在这种情况下,我会说你可能想要编辑你的答案以包含当前调用的 Erlang 函数,因为这是将来需要调用它的方式:@ 987654331@.
    • @PaulFioravanti 感谢您的提示。我澄清了我的答案。
    • @splatte 如果它在 1.4 中将被弃用,你知道它将被替换成什么吗?
    猜你喜欢
    • 2014-04-29
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多