我一直在修改一个因子模块如下:
-module(factorial).
-export([factorial/1]).
factorial(0) ->
1;
factorial(Val)->
Val * factorial(Val-1).
如果我跑:
1> c(factorial).
{ok,factorial}
2> factorial:factorial(100).
我得到: 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
Erlang如此轻松地拥有如此庞大的数字?在erlang.org上谈到数字类型时,它只是声明它们包含整数或浮点数。它必须是某种动态整数,根据需要调整其字节大小?
我发现这很酷我只是不知道它是如何完成的。
答案 0 :(得分:4)
这是许多函数式编程语言的一个共同特征,称为Arbitrary precision arithmetic。
请注意,在Erlang中,nly for integers, not floats可以使用任意精度。