emacs是否具有有理数数据类型

liw*_*wei 5 emacs elisp

我EVAL在口齿不清表达

(+ (/ 1 2) (/ 1 2))
Run Code Online (Sandbox Code Playgroud)

我得到了0.

通常它应该是1.

Jua*_*cho 9

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

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

GNU Emacs Calc手册:


Ole*_*liv 4

试试这个方法

(+ (/ 1.0 2) (/ 1.0 2))
Run Code Online (Sandbox Code Playgroud)

根据emacs 文档

功能: / 被除数和余除数

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

  • 这无法回答问题,尽管从字里行间,您可以推断,由于 Emacs 使用浮点数,因此它没有单独的实数类型。(许多 Lisp 实现都有一个;也就是说,1/3 是精确表示的,而不是浮点近似值。) (5认同)