2016-08-03 11 views
8

Ben bir dize/ikili float dönüştürmek için nasıl anlamaya çalışıyorum amaİksir - dize

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

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

göründüğü Biz çıkıp "1200.00" ihtiyaç onun kadar kolay değildir gibi görünüyor am float dönüştürme ... değil sadece üs gösterimde sizin USECASE ilgili daha fazla bilgi olmadan

cevap

9

yılında, bu size istenilen sonucu verecektir: Bu erlang en float_to_binary/2 kullanıyor ve deprec olacak

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

eliksir 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

Bu, herhangi bir yerde belgelenmiş mi? Tek gördüğüm [Float.to_string/1] (http://elixir-lang.org/docs/stable/elixir/Float.html#to_string/1). –

+2

Biraz gizli ve kullanımdan kaldırılacak bir şey: https://github.com/elixir-lang/elixir/blob/v1.3.2/lib/elixir/lib/float.ex#L225 Muhtemelen endişelerden dolayı Şamandıralarda hassas kalıt. Bu kütüphaneye bağlı olarak https://github.com/ericmj/decimal bu kütüphaneye bağlı olabilir – splatte

+4

@splatte Bu durumda cevabınızı cevabınızı şu anda çağırdığı Erlang fonksiyonunu içerecek şekilde düzenlemek isteyebilirsiniz. Gelecekte çağrılması gereken yol: ': erlang.float_to_binary (1200.00, decimals: 2)'. –