2017-04-23 31 views
3

藥劑是輸出:3.5E-4在Elixir中獲取非指數版本的float?

我想顯示:0.00035

有沒有辦法約束仙丹輸出浮動的非指數的版本?

+1

你是什麼意思的「輸出」?你是否想要顯示一個字符串,比如「0.00035」?你可以嘗試用'Decimal'包裝浮點數,例如:'Decimal.new(0.00035)#=> #Decimal <0.00035>'和這個'to_string',所以:'Decimal.new(0.00035)|> to_string#=>「0.00035 「' –

+4

也許':erlang.float_to_binary(3.5e-4,[:compact,decimals:20])'(默認爲'[scientific:20]' – Dogbert

+0

無論如何不知道小數精度,邊界情況超出20)? – Emily

回答

1

作爲一般規則,如果你想精確控制輸出,你需要使用基礎erlang庫io:format

Erlang io format

這有點獨特,但它更多的或類似的其他語言的printf或sprintf的少的作品。如果您對這些功能更熟悉,則有一個Elixir庫可爲您進行翻譯。

https://github.com/parroty/exprintf

的Float.to_string功能就是用於打印的花車,據我可以告訴有沒有辦法來覆蓋它使用的格式。

+1

'Float.to_string'已棄用,用於支持':erlang。 float_to_binary'。正如@Dogbert在他的評論中指出的那樣,你可以用[decimals:xx]選項覆蓋格式,這可以正常工作到20.然而,它給它一個數字> 20,小數部分顯示不正確的舍入。Elixir浮點數是64位雙精度,我相信最大小數位數是16,所以我會懷疑這個值20的會很好。 –

+0

這不是當前的主人所說的。 https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/float.ex#L433看起來像Float.to_string/2已被棄用。 –

+1

那就是我所說的......「Float.to_string已棄用,支持:erlang.float_to_binary」。 'decimals'選項可以給'':erlang.float_to_binary' –