emacs支持不适合整数的大数字吗?如果是,我该如何使用它们呢?
发布于 2009-09-03 07:05:29
Emacs Lispers对
缺乏bignum处理感到沮丧:
calc.el提供了非常好的bignum功能。
calc.el是GNU Emacs发行版的一部分。有关可用函数,请参阅其源代码。您可以通过键入M-x quick-calc立即开始使用它。您可能还想检查一下bigint.el package,这是一个处理bignums的非标准、轻量级的实现。
发布于 2020-09-08 17:00:01
Emacs27.1原生支持bignums (参见the NEWS file of Emacs):
** Emacs Lisp整数现在可以是任意大小。Emacs使用GNU Multiple Precision (GMP)库来支持大小太大而无法在本地支持的整数。本地支持的整数称为"fixnums",而较大的整数称为"bignums“。新的谓词'bignump‘和'fixnump’可用于区分这两种类型的整数。
所有的算术、比较和逻辑(又称“按位”)操作,其中bignums是有意义的,现在既支持fixnums也支持bignums。但是,请注意,与fixnums不同,bignums不会与'eq‘相等,您必须使用'eql’。(当然,带'=‘的数字比较在这两种情况下都有效。)
由于较大的bignum会消耗大量内存,因此Emacs会限制Lisp程序允许创建的最大bignum的大小。新变量'integer-width‘的非负值指定了bignum中允许的最大位数。如果超出此限制,Emacs将发出整数溢出错误信号。
一些原语函数以前返回浮点数或整数列表来表示不适合固定数的整数。这些函数现在只返回整数。受影响的功能包括计算代码点的“encode-char”功能,计算文件大小和其他属性的“file -attribute”功能,计算进程id的“process -id”功能,以及计算用户和组id的“user -uid”和“group -gid”功能。
当使用固定数字的算术计算溢出固定范围时,会自动选择大数。表达式(bignump most-positive-fixnum)返回nil,而(bignump (+ most-positive-fixnum 1))返回t。
https://stackoverflow.com/questions/1371638
复制相似问题