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
的答案。