13

後で印刷される文字列を生成する必要があり、小数点を含めることはできません。そのために、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」を生成します

「再」置換を実行できることはわかっていますが、フォーマットのエレガントな方法を見つけようとしています。

4

3 に答える 3

18
1> float_to_list(223.44456,[{decimals,0}]).
"224"

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

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

erlang:float_to_list/2

于 2013-05-16T23:52:27.053 に答える
0

整数に変換するには、次のことができます。

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

そのまま文字列のままにしたい場合は、

erlang:float_to_list(789.1234,[{decimals,0}]).
于 2017-04-24T10:57:12.193 に答える