Elixir:如何计算浮点精度> 15?

时间:2017-04-25 21:44:10

标签: elixir

我需要能够计算出比Float类型似乎允许的更多小数位数: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)

根据实用程序员的编程Elixir 书:

  

浮点数是IEEE 754双精度,给它们大约16位精度

有没有类似Ruby的BigDecimal允许任意精度浮点十进制算术?或者在Elixir中轻松实现这一目标?

1 个答案:

答案 0 :(得分:3)

有一个允许任意精度的Decimal库,但是没有你用Float获得的所有可用的数学例程。

https://hex.pm/packages/decimal

十进制通过尝试尽可能多地保留输入数字的初始精度并且仅在不可避免的舍入错误时截断到指定的精度来工作。