5

我从头开始评估一个 lisp 表达式

(+ (/ 1 2) (/ 1 2))

我得了一个 0。

通常它应该是1。

4

3 回答 3

9

正如 Oleg 指出的那样,除非您包含浮点参数(如1.0),否则运算符通常默认为整数算术。

关于您关于有理数支持的问题,emacs-calc(它是 emacs 的一部分)支持许多数字类型,包括分数(即有理数)、复数、无限精度整数等。您的代码必须调用 emacs-calc 函数(而不是/等),以便使用 calc 的算术。

GNU Emacs 计算手册:

于 2012-05-23T14:31:39.663 回答
4

试试这个方法

(+ (/ 1.0 2) (/ 1.0 2))

根据emacs doc

函数:/除数除数&rest除数

如果所有参数都是整数,那么结果也是整数。

于 2012-05-23T11:58:08.243 回答
1

您可以在此处阅读有关 elisp 中数字的所有信息:

C-hig (elisp) Numbers RET

正如tripleee 已经指出的那样,答案显然是“否”。

于 2012-05-23T13:16:15.153 回答