位置:首页 > 高级语言 > Lisp教程 > LISP数字

LISP数字

Common Lisp定义了几种数字。数字数据类型包括由LISP支持各种数字。

通过LISP支持数类型是:

  • Integers

  • Ratios

  • Floating-yiibai numbers

  • Complex numbers

下图显示的数量和层次在LISP提供的各种数字数据类型:

Numeric Types

在LISP各种数值类型

下表描述了LISP语言提供的各种数字类型的数据:

Data type 描述
fixnum 这个数据类型表示的整数哪些不是太大,大多在范围-215到215-1(它是依赖于机器)
bignum 这些都是非常大的数字有大小受限于内存中分配LISP量,它们不是长整数数字。
ratio 表示两个数中的分子/分母形式的比率。在/函数总是产生结果的比率,当其参数都是整数。
float 它表示非整数。还有随着精密四个浮点数据类型。
complex 它表示复数,这是由#C表示。实部和虚部可以是两者或者理性或浮点数。

示例

创建一个名为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)

数字函数

下表描述了一些常用的数值函数:

Function 描述
+, -, *, / 各算术运算
sin, cos, tan, acos, asin, atan 相应的三角函数
sinh, cosh, tanh, acosh, asinh, atanh 相应的双曲函数
exp 幂函数,计算 ex
expt 幂函数,需要基础和幂两者
sqrt 它可以计算一个数的平方根
log 对数函数。它的一个参数给出,则它计算其自然对数,否则将第二个参数被用作基数
conjugate 它计算一个数的复共轭,如有任何实数,它返回数字本身
abs 它返回一个数的绝对值(或幅度)
gcd 它可以计算给定数字的最大公约数
lcm 它可以计算给定数的最小公倍数
isqrt 它提供了最大的整数小于或等于一个给定的自然数的精确平方根。
floor, ceiling, truncate, round 所有这些函数把一个数字的两个参数,并返回商;地面返回的最大整数不大于比,天花板选择较小的整数,它比比率越大,截断选择相同符号的整数的比值与最大的绝对值是小于的比值的绝对值,与圆公司选用一个整数,它是最接近比值
ffloor, fceiling, ftruncate, fround 确实与上述相同,但返回的商作为一个浮点数
mod, rem 返回除法运算的余数
float 将实数转换为浮点数
rational, rationalize 将实数转换为有理数
numerator, denominator 返回有理数的各个部分
realpart, imagpart 返回一个复数的实部和虚部

示例

创建一个名为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