emacs 中的数字函数

More details about this document
Create Date:
Publish Date:
Update Date:
2024-06-11 07:47
Creator:
Emacs 29.2 (Org mode 9.6.15)
License:
This work is licensed under CC BY-SA 4.0

elisp manual 在 Numbers 一章中介绍了 emacs 的数字类型和一些函数,但是内容比较分散在不同的小节中了。本文的目的是收集一下 emacs 中的一些数字函数(位运算不知道算不算),方便写代码时查找。由于 emacs 本身也不是用来进行科学计算的,我似乎很难找到以数学计算为目的的包(不算 calc 的话)。

本文是 elisp manual 补完计划的一部分。本文使用的 emacs 为 28.2 x86_64 on windows 10。

1. emacs 中的数字

虽然文档中写到 emacs 支持整数和浮点数两种数字类型,但实际上应该是三种:定长整数(fixnum),大整数(bignum)和浮点数(float)。emacs 于 27 中引入了大整数,这是使用 gmp 实现的。

通过在整数的前面添加 #{X} 前缀,我们可以使用二进制( #b ),八进制( #o )和十六进制( #x )。当然我们也可以通过 #{radix}r{integer} 来指定 2 到 36 进制:

#b10101 => 21
#o777 => 511
#xff => 255
#3r12 => 5
#36rincludeyy => 52609796300554

对浮点数我们可以使用科学计数法:

15e2 => 1500.0
1e+10 => 10000000000.0
.15e4 => 1500.0

下面是一些我不知道如何归类的函数,不如就放在这里了:

2. 一些常量

3. 数字 <=> 字符串

4. 判断函数

5. 数值比较函数

6. 取整函数

对于上面的每一个函数,在函数名前面加上 f 可以得到浮点数版本,也就是返回值为浮点数而不是整数,但是在 = 意义下相等:(它们没有第二参数)

(= (floor 1.5) (ffloor 1.5)) => t
(= (ceiling 1.5) (fceiling 1.5)) => t
(= (ftruncate 1.5) (truncate 1.5)) => t
(= (fround 1.5) (round 1.5)) => t

(ffloor 1.5) => 1.0

7. 算术函数

8. 初等函数

9. 位运算函数

10. 随机数函数