如何获得elixir中每种类型的最小值和最大值

时间:2015-01-22 16:16:34

标签: elixir

如何获得elixir中每种类型的最小值和最大值?例如,一个整数,浮点数和一个字符串的最大可能长度。

我知道在C中它在limits.h中定义为INT_MININT_MAX,依此类推。关于灵丹妙药中这些类型的限制的文件?

1 个答案:

答案 0 :(得分:17)

Elixir(Erlang实际上)使用bignum arithmetic,这是计算机科学中使用的一种算法(引用维基百科)

  

计算是在精度数字仅受主机系统可用内存限制的数字上执行的

Erlang文档中的a page讨论了Erlang VM的限制(例如,原子最多可以包含255个字符);你可以看到,如果你看一下那个页面,甚至没有提到整数限制。

Erlang / Elixir中的整数仅受系统可用内存的限制,因此对它们的大小几乎无限制

对于二进制文件(字符串),我将引用上面链接的页面说:

  

在Erlang的32位实现中,536870911字节是可以使用位语法构造或匹配的最大二进制文件。 (在64位实现中,最大大小为2305843009213693951字节。)如果超出限制,则位语法构造将失败并出现system_limit异常,而任何与过大的二进制文件匹配的尝试都将失败。从R11B-4版本开始强制实施此限制;在早期版本中,对太大二进制文件的操作通常会失败或给出不正确的结果。在将来的Erlang / OTP版本中,创建二进制文件的其他操作(例如list_to_binary / 1)可能也会强制执行相同的限制。