Обрезать поплавок в Эрланге - PullRequest
11 голосов
/ 24 октября 2010

Я использую функцию для создания списка с плавающей точкой.

 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 хочет строку, я не хочу выводить ее на экран.

Ответы [ 5 ]

25 голосов
/ 24 октября 2010

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

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.

3 голосов
/ 19 февраля 2016

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

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

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

:erlang.float_to_list(5.231,[{:decimals, 2}]) выводит '5,2'

3 голосов
/ 02 июня 2011

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

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

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

0 голосов
/ 24 октября 2010

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

0 голосов
/ 24 октября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...