9.1 类型 (Types)
Common Lisp 提供了四种不同类型的数字:整数、浮点数、比值与复数。本章所讲述的函数适用于所有类型的数字。有几个不能用在复数的函数会特别说明。
整数写成一串数字:如 2001
。浮点数是可以写成一串包含小数点的数字,如 253.72
,或是用科学表示法,如 2.5372e2
。比值是写成由整数组成的分数:如 2/3
。而复数 a+bi
写成 #c(a b)
,其中 a
与 b
是任两个类型相同的实数。
谓词 integerp
、 floatp
以及 complexp
针对相应的数字类型返回真。图 9.1 展示了数值类型的层级。
图 9.1: 数值类型
要决定计算过程会返回何种数字,以下是某些通用的经验法则:
- 如果数值函数接受一个或多个浮点数作为参数,则返回值会是浮点数 (或是由浮点数组成的复数)。所以
(+ 1.0 2)
求值为3.0
,而(+ #c(0 1.0) 2)
求值为#c(2.0 1.0)
。 - 可约分的比值会被转换成最简分数。所以
(/ 10 2)
会返回5
。 - 若计算过程中复数的虚部变成
0
时,则复数会被转成实数 。所以(+ #c(1 -1) #c(2 1))
求值成3
。
第二、第三个规则可以在读入参数时直接应用,所以:
> (list (ratiop 2/2) (complexp #c(1 0)))
(NIL NIL)
当前内容版权归 readthedocs 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 readthedocs .