我正在使用一个函数从浮点数创建一个列表。
float_to_list(0.02).
它返回:
"2.00000000000000000000e-002"
我需要它给我一个完全相同的数字:
“0.20”
如果我喂它5.23
“5.23”
如果我喂它5.5
“5.50”
所以基本上这个数字四舍五入到小数点后两位。 可能很容易解决。
由于
编辑:
我想使用它看起来可能有效的io格式,
但它不在这个例子中:
wxTextCtrl:setValue( TcGrossProfit, io:format("~p", [NUMBER]), ),
似乎textctrl想要一个字符串,我不想把它打印到屏幕上。
答案 0 :(得分:25)
你在寻找这样的东西:
6> F = 5/2.
2.50000
7> io_lib:format("~.1f",[F]).
["2.5"]
8> io_lib:format("~.2f",[F]).
["2.50"]
9> io_lib:format("~.3f",[F]).
["2.500"]
如果是,请查看模块io_lib。
答案 1 :(得分:3)
mochinum:digits
将float转换为具有适当精度级别的字符串。
1> mochinum:digits(1.1).
"1.1"
2> mochinum:digits(1.2345).
"1.2345"
不完全是OP所要求的,但仍然有用。
答案 2 :(得分:3)
或者你可以使用你已经使用过的功能。
float_to_list(0.02,[{decimals, 2}])
输出'0.02'
或Elixir用户;)
:erlang.float_to_list(5.231,[{:decimals, 2}])
输出'5.2'
答案 3 :(得分:0)
我知道人们不喜欢“我不是语言X专家”的答案,但是printf命令非常普遍,所以我会说,在Erlang中寻找printf的模拟。
编辑:看起来格式和fwrite可能是那些类似物。有关erlang.org的更多信息。
答案 4 :(得分:0)
This link提供截断/ floor或ceil或round浮点函数。鉴于那些你可以通过乘以100来舍入到2位数,然后重新排列然后再除以100(并且可能再次舍入以避免精度误差)