Numbers
Common Lisp定义了几种数字。 number数据类型包括LISP支持的各种数字。
LISP支持的数字类型是 -
- Integers
- Ratios
- Floating-point numbers
- Complex numbers
下图显示了LISP中可用的数字层次结构和各种数字数据类型 -
LISP中的各种数字类型
下表描述了LISP中可用的各种数字类型数据 -
Sr.No. | 数据类型和描述 |
---|---|
1 | fixnum 此数据类型表示不太大且大多数在-215到215-1范围内的整数(取决于机器) |
2 | bignum 这些是非常大的数字,其大小受限于为LISP分配的内存量,它们不是fixnum数字。 |
3 | ratio 表示分子/分母形式中两个数字的比率。 当函数的参数是整数时,/ function总是以比率产生结果。 |
4 | float 它表示非整数。 有四种浮点数据类型,精度越来越高。 |
5 | complex 它表示复数,用#c表示。 实部和虚部可以是有理数或浮点数。 |
例子 (Example)
创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。
(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
(terpri)
(write ( + #c( 1 2) #c( 3 -4)))
执行代码时,它返回以下结果 -
1/2
5/4
#C(4 -2)
Number 函数
下表描述了一些常用的数字函数 -
Sr.No. | 功能说明 |
---|---|
1 | +, -, *, / 各算术运算 |
2 | sin, cos, tan, acos, asin, atan 各自的三角函数。 |
3 | sinh, cosh, tanh, acosh, asinh, atanh 各自的双曲函数。 |
4 | exp 指数函数。 计算e x |
5 | expt 指数函数,取得基数和幂。 |
6 | sqrt 它计算数字的平方根。 |
7 | log 对数函数。 给出一个参数,然后计算其自然对数,否则第二个参数用作基数。 |
8 | conjugate 它计算一个数的复共轭。 如果是实数,则返回数字本身。 |
9 | abs 它返回数字的绝对值(或幅度)。 |
10 | gcd 它计算给定数字的最大公约数。 |
11 | lcm 它计算给定数字的最小公倍数。 |
12 | isqrt 它给出的最大整数小于或等于给定自然数的精确平方根。 |
13 | floor, ceiling, truncate, round 所有这些函数都将两个参数作为数字并返回商; floor返回不大于比率的最大整数, ceiling选择大于ratio的较小整数, truncate选择相同符号的整数作为比率小于绝对值的最大绝对值,并且round选择一个最接近比率的整数。 |
14 | ffloor, fceiling, ftruncate, fround 与上面相同,但返回商作为浮点数。 |
15 | mod, rem 返回除法运算中的余数。 |
16 | float 将实数转换为浮点数。 |
17 | rational, rationalize 将实数转换为有理数。 |
18 | numerator, denominator 返回有理数的各个部分。 |
19 | realpart, imagpart 返回复数的实部和虚部。 |
例子 (Example)
创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。
(write (/ 45 78))
(terpri)
(write (floor 45 78))
(terpri)
(write (/ 3456 75))
(terpri)
(write (floor 3456 75))
(terpri)
(write (ceiling 3456 75))
(terpri)
(write (truncate 3456 75))
(terpri)
(write (round 3456 75))
(terpri)
(write (ffloor 3456 75))
(terpri)
(write (fceiling 3456 75))
(terpri)
(write (ftruncate 3456 75))
(terpri)
(write (fround 3456 75))
(terpri)
(write (mod 3456 75))
(terpri)
(setq c (complex 6 7))
(write c)
(terpri)
(write (complex 5 -9))
(terpri)
(write (realpart c))
(terpri)
(write (imagpart c))
执行代码时,它返回以下结果 -
15/26
0
1152/25
46
47
46
46
46.0
47.0
46.0
46.0
6
#C(6 7)
#C(5 -9)
6
7