Ответ 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.
Я использую функцию для создания списка из 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 хочет строку, я не хочу ее печатать на экране.
Вы ищете что-то вроде этого:
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
преобразует float в строку с соответствующим уровнем точности.
1> mochinum:digits(1.1).
"1.1"
2> mochinum:digits(1.2345).
"1.2345"
Не совсем то, что запросил ОП, но тем не менее полезен.
В качестве альтернативы вы можете использовать функцию, которую вы уже использовали.
float_to_list(0.02,[{decimals, 2}])
выходы '0,02'
Или для пользователей Elixir;)
:erlang.float_to_list(5.231,[{:decimals, 2}])
выходы "5.2"
Я знаю, что людям не нравятся ответы на "Я не эксперт в языке X", но команда printf довольно вездесущая, поэтому я скажу, ищите аналог printf в Erlang.
Изменить: похоже, формат и fwrite могут быть этими аналогами. Для получения дополнительной информации от erlang.org.
Эта ссылка предоставляет функции, которые усекают/перекрывают или перекрывают или вокруг поплавка. Учитывая, что вы можете округлить до двух цифр, умножив их на 100, свернув, а затем разделив назад на 100 (и, возможно, снова округляя, чтобы избежать ошибок точности)