2016-08-03 63 views
8

我試圖找出如何將浮動轉換爲字符串/二進制,但好像它並不容易,因爲它看起來藥劑 - 轉換浮點數到字符串

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

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

我們需要「1200.00」出來......只是沒有在指數符號

回答

9

沒有你的用例的進一步細節,這會給你你想要的結果:

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

它使用Erlang的float_to_binary/2並將於deprec (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

這是記錄在任何地方嗎?我看到的只是[Float.to_string/1](http://elixir-lang.org/docs/stable/elixir/Float.html#to_string/1)。 –

+2

這有點隱藏,很快就會被棄用:https://github.com/elixir-lang/elixir/blob/v1.3.2/lib/elixir/lib/float.ex#L225 可能是由於擔心精確的繼承在浮動。根據用例,這個庫可能與https://github.com/ericmj/decimal相關 – splatte

+4

@splatte在那種情況下,我會說你可能想要編輯你的答案以包含當前調用的Erlang函數,因爲這是它將來需要調用:':erlang.float_to_binary(1200.00,decimals:2)'。 –