Усечь поплавок в Эрланге

Я использую функцию для создания списка из float.

 float_to_list(0.02).

Он возвращает:

"2.00000000000000000000e-002"

Мне нужно это, чтобы дать мне число точно так же:

"0,20"

Если я его подал 5.23

"5,23"

Если я его накопил 5.5

"5,50"

Итак, в основном число округлено до двух знаков после запятой. Вероятно, это простое решение.

Спасибо

EDIT:

Я хотел бы использовать формат io, похоже, он может работать,

но в этом примере это не так:

wxTextCtrl:setValue( TcGrossProfit, io:format("~p", [NUMBER]), ),

Кажется, textctrl хочет строку, я не хочу ее печатать на экране.

Ответ 1

Вы ищете что-то вроде этого:

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.

Ответ 2

mochinum:digits преобразует float в строку с соответствующим уровнем точности.

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

Не совсем то, что запросил ОП, но тем не менее полезен.

Ответ 3

В качестве альтернативы вы можете использовать функцию, которую вы уже использовали.

float_to_list(0.02,[{decimals, 2}]) выходы '0,02'

Или для пользователей Elixir;)

:erlang.float_to_list(5.231,[{:decimals, 2}]) выходы "5.2"

Ответ 4

Я знаю, что людям не нравятся ответы на "Я не эксперт в языке X", но команда printf довольно вездесущая, поэтому я скажу, ищите аналог printf в Erlang.

Изменить: похоже, формат и fwrite могут быть этими аналогами. Для получения дополнительной информации от erlang.org.

Ответ 5

Эта ссылка предоставляет функции, которые усекают/перекрывают или перекрывают или вокруг поплавка. Учитывая, что вы можете округлить до двух цифр, умножив их на 100, свернув, а затем разделив назад на 100 (и, возможно, снова округляя, чтобы избежать ошибок точности)