String Elixir:浮点到格式化字符串
我在中编写了一个简单的代码kata,解决了以下问题: 系列:1+1/4+1/7+1/10+1/13+1/16+ 我有一个关于测试的错误,如下所示: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
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来实现这一点。。