2017-04-25 19 views
0

私はFloatタイプを許可するように思わ以上の小数点以下の桁を計算できるようにする必要があります:実用プログラマプログラミングエリクサー本によると15エリクシール:浮動小数点精度> 15を計算する方法?

iex(19)> Float.round(1/7, 15) 
0.142857142857143 
iex(20)> Float.round(1/7, 16) 
** (FunctionClauseError) no function clause matching in Float.round/2 
    (elixir) lib/float.ex:163: Float.round(0.14285714285714285, 16) 

フロートはIEEEです754倍精度で約16桁の精度を提供します

Rubyのものと同じものはありますかBigDecimalこれは任意精度の浮動小数点演算を可能にしますか?あるいはエリクサーで簡単に達成するための何らかの方法?

+1

ダン。あなたがなぜそんなに高い精度が必要なのか尋ねると、私は好奇心を呼ぶことができますか? – cdegroot

+0

私はオイラー問題#26:逆数サイクルを解いています。これは、単位分数1/2、1/3、... 1/999の小数点を見て、数字の最長の繰り返しシーケンスを見つけようとしていますその中で。私はFred the Magic Wonder Dogが提案したDecimalライブラリを使って3000桁の精度で答えを見つけることができました! –

答えて

3

任意の精度が可能なDecimalライブラリがありますが、Floatで使用できるすべての数学ルーチンはありません。

https://hex.pm/packages/decimal

進数は、可能な限り入力番号の初期精度をできるだけ多く維持することを試みることによって動作し、エラーのみオフ不可避ラウンドがある場合、指定の精度に切り捨て。

関連する問題