如何将Erlang浮点数格式化为整数(不带小数点)

tktrz96b  于 2022-12-08  发布在  Erlang
关注(0)|答案(3)|浏览(185)

我需要生成一个字符串,它将在以后打印出来,并且不能有小数点。为此,我尝试使用Erlang中的io_lib:format模块,但我不确定什么是合适的格式来实现这一点。
例如,我可以使用以下精度最高为.1的函数,但不能使用.0

io_lib:format("~.2f", [789.1234]).
789.12

io_lib:format("~.1f", [789.1234]).
789.1

io_lib:format("~.0f", [789.1234]).
** exception error: bad argument
 in function  io_lib:format/2
    called as io_lib:format("~.0f",[789.1234])

我所需要的一切都来自:

  • 789.1234产生字符串**“789”**
  • 123.0产生字符串**“123”**

我知道我可以做一个“重新”更换,但我试图找到一个格式优雅的方式。

k0pti3hp

k0pti3hp1#

如果你在Erlang中截断一个浮点数,它将变成整数。下面是代码。

1> is_float(round(1.5)).
false
2> is_integer(round(1.5)).
true 
3> is_float(trunc(1.5)).    
false
4> is_integer(trunc(1.5)).
true
5> round(1.5).            
2
6> trunc(1.5).            
1
sxpgvts3

sxpgvts32#

1> float_to_list(-223.56,[{decimals,0}]).
"-224"

2> float_to_list(223.56,[{decimals,0}]).
"224"

3> float_to_list(223.44456,[{decimals,0}]).
"223"

4> float_to_list(223.44456,[{decimals,6}]).        
"223.444560"

5> float_to_list(223.44456,[{decimals,6},compact]).       
"223.44456"

erlang:float_to_list/2

64jmpszr

64jmpszr3#

要转换为整数,可以执行以下操作:

erlang:list_to_integer(erlang:float_to_list(789.1234,[{decimals,0}])).

如果你想保持它在字符串中的原样

erlang:float_to_list(789.1234,[{decimals,0}]).

相关问题