数字
Lisp定义了几种数字。数字数据类型包括由LISP支持各种数字。
通过LISP支持数类型是:
Integers
Ratios
Floating-yiibai numbers
Complex numbers
数值类型
下表描述了LISP语言提供的各种数字类型的数据:
Data type |
描述 |
fixnum |
这个数据类型表示的整数哪些不是太大,大多在范围-215到215-1(它是依赖于机器) |
bignum |
这些都是非常大的数字有大小受限于内存中分配LISP量,它们不是长整数数字。 |
ratio |
表示两个数中的分子/分母形式的比率。在/函数总是产生结果的比率,当其参数都是整数。 |
float |
它表示非整数。还有随着精密四个浮点数据类型。 |
complex |
它表示复数,这是由#C表示。实部和虚部可以是两者或者理性或浮点数。 |
示例
创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:
(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
rpri)
(w|te ( + #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一个新的源代码文件,并在其中输入如下代码:
(adsbygoogle = window.adsbygoogle || []).push({});
(adsbygoogle = window.adsbygoogle || []).push({});
(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