String Elixir:浮点到格式化字符串

String Elixir:浮点到格式化字符串,string,floating-point,elixir,String,Floating Point,Elixir,我在中编写了一个简单的代码kata,解决了以下问题: 系列:1+1/4+1/7+1/10+1/13+1/16+ 我有一个关于测试的错误,如下所示: series sum (6.0ms) 1) test series sum (TestSeries) fixture:6 Assertion with == failed code: sum(0) == "0.00" lhs: '0.00' rhs: "0.00" stacktrac

我在中编写了一个简单的代码kata,解决了以下问题:

系列:1+1/4+1/7+1/10+1/13+1/16+

我有一个关于测试的错误,如下所示:

series sum (6.0ms)
  1) test series sum (TestSeries)
     fixture:6
     Assertion with == failed
     code: sum(0) == "0.00"
     lhs:  '0.00'
     rhs:  "0.00"
     stacktrace:
       fixture:7 
它们在长生不老药、
'0.00'
“0.00”
方面是否有所不同

将浮点数格式化为字符串是一项艰巨的工作,就像这样

# My Solution
defmodule Series do
  def sum(n) do
    n
    |> gen_series
    |> do_sum
    |> make_format
  end

  def gen_series(n) do
    if n == 0 do
      [0.00]
    else
      for x <- 1..n, do: 1/(1+3*(x-1))
    end
  end

  def do_sum(series) do
    series
    |> Enum.reduce(&(&1+&2))
  end

  def make_format(sum) do
    :io_lib.format("~.2f", [sum])
    |> Enum.at(0)
  end
end
#我的解决方案
DEF模块系列do
def sum(n)do
N
|>gen_系列
|>多谢
|>制表
结束
def gen_系列(n)do
如果n==0,则执行以下操作
[0.00]
其他的
对于x枚举,减少(&(&1+&2))
结束
def make_格式(总和)do
:io_lib.format(“.2f”,[sum])
|>枚举地址(0)
结束
结束
它们在长生不老药、“0.00”和“0.00”方面有区别吗

是的

单引号文字是
charlist
,它是代码点列表

要将浮点转换为字符串,请使用以下命令:

def make_format(sum) do
    :io_lib.format("~.2f", [sum])
    # use to_string instead of Enum.at(0) which returns charlist
    |> to_string()
end

谢谢我将提醒您
charlist
string
之间的区别。但是我希望有一个简单的API来实现这一点。。