【发布时间】:2017-09-23 02:32:51
【问题描述】:
我需要能够计算比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)
根据实用程序员的Programming Elixir一书:
浮点数是 IEEE 754 双精度,精度约为 16 位
是否有任何类似于 Ruby 的 BigDecimal 允许任意精度浮点十进制算术的东西?或者有什么方法可以在 Elixir 中轻松实现?
【问题讨论】:
-
该死。如果我问你为什么需要这么高的精度,你能叫我好奇吗?
-
我正在解决欧拉问题 #26:倒数循环,这需要您查看单位分数 1/2、1/3、... 1/999 的小数位数来尝试找出其中最长的重复数字序列。使用魔术神奇狗 Fred 建议的 Decimal 库,我能够以 3000 位的精度找到答案!
标签: elixir