2016-08-03 6 views
8

Ich versuche, herauszufinden, wie man einen Schwimmer in einen String/binary zu konvertieren, aber scheint, wie es ist nicht so einfach, wie esElixir - Konvertieren Schwimmer String

iex(1)> to_string(1200.00) 
"1.2e3" 

iex(2)> Float.to_string(1200.00) 
"1.2e3" 

sieht Wir „1200,00“ müssen kommen ... nur nicht in der Exponenten-Darstellung

Antwort

9

Ohne weitere Details zu Ihrem usecase, dies wird Ihnen das gewünschte Ergebnis:

iex(1)> Float.to_string(1200.00, decimals: 2) 
"1200.00" 

Es erlang verwendet float_to_binary/2 und wird Abschr ated in Elixir 1.4 (https://github.com/elixir-lang/elixir/blob/v1.3.2/lib/elixir/lib/float.ex#L225):

def to_string(float, options) do 
    :erlang.float_to_binary(float, expand_compact(options)) 
end 
+1

Ist dies irgendwo dokumentiert? Alles was ich sehe ist [Float.to_string/1] (http://elixir-lang.org/docs/stable/elixir/Float.html#to_string/1). –

+2

Es ist ein bisschen versteckt und bald veraltet: https://github.com/elixir-lang/elixir/blob/v1.3.2/lib/elixir/lib/float.ex#L225 Wahrscheinlich wegen Bedenken mit Genauigkeit erben in Floats. Je nach Anwendungsfall könnte diese Bibliothek https://github.com/ericmj/decimal relevant sein. – splatte

+4

@splatte In diesem Fall würde ich dann sagen, dass Sie vielleicht Ihre Antwort so bearbeiten möchten, dass sie die Erlang-Funktion enthält, die sie gerade aufruft, denn das ist die So muss es in Zukunft aufgerufen werden: ': erlang.float_to_binary (1200.00, Dezimalstellen: 2)'. –