List 截断Erlang中的浮点

List 截断Erlang中的浮点,list,erlang,floating-point,List,Erlang,Floating Point,我正在使用一个函数从浮点创建一个列表 float_to_list(0.02). 它返回: "2.00000000000000000000e-002" 我需要它给我一个完全一样的数字: “0.20” 如果我喂它5.23 “5.23” 如果我喂它5.5 “5.50” 所以基本上数字四舍五入到小数点后两位。 可能是个简单的解决办法 谢谢 编辑: 我想使用io格式,看起来可能有用 但在本例中并非如此: wxTextCtrl:setValue( TcGrossProfit, io:format("~

我正在使用一个函数从浮点创建一个列表

 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想要一个字符串,我不想把它打印到屏幕上。

我知道人们不喜欢“我不是语言X专家”的答案,但printf命令非常普遍,所以我会说,在Erlang中寻找printf的类似物


编辑:看起来格式和fwrite可能是类似的。有关更多信息,请参见。

提供截断/地板或天花板或使浮点四舍五入的函数。对于那些可以通过乘以100、旋转然后再除以100(并可能再次四舍五入以避免精度错误)四舍五入到2位的数字,您是否在寻找类似以下内容:

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。

mochinum:digits
以适当的精度将浮点转换为字符串

1> mochinum:digits(1.1).
"1.1"
2> mochinum:digits(1.2345).
"1.2345"

不完全是OP所要求的,但仍然有用。

或者,您可以使用您已经使用的功能

float_to_list(0.02,[{小数点,2}])
输出“0.02”

或用于长生不老药用户;)


:erlang.float_to_list(5.231,[{:小数,2}])
输出“5.2”

+1,因为它是唯一提到
io_lib
的答案-格式化为字符串(aka list)的东西,而不是像
io
@pst那样打印输出,到目前为止唯一提到
io_lib
的答案。