数值类型

数值类型

整数

整数写成一串数字:如 2001 。

  1. > 9999999999999999999999
16进制
  1. > #xa
  2. 10
2进制
  1. #b111
  2. 7
8进制
  1. > #o111
  2. 73

浮点数

浮点数是可以写成一串包含小数点的数字,如 253.72 ,或是用科学表示法,如 2.5372e2 。

  1. 3.14159s0 ; single
  2. 3.14159d0 ; double

比值

比值是写成由整数组成的分数:如 2/3 。

  1. 1/2 ; ratios

复数

复数 a+bi 写成 #c(a b) ,其中 a 与 b 是任两个类型相同的实数。

  1. #C(1 2) ; complex numbers

类型判断

  1. > (integerp 1)
  2. T
  3. > (floatp 2.0)
  4. T
  5. > (complexp #c(1 2))
  6. T

类型转换

float浮点数

  1. > (float 2)
  2. 2.0

truncate 返回任何实数的整数部分

  1. > (truncate 1.3)
  2. 1
  3. 0.29999995

第二个返回值 0.29999995 是传入的参数减去第一个返回值。(会有 0.00000005 的误差是因为浮点数的计算本身就不精确。)

floor 返回小于等于其参数的最大整数

常用函数

zerop 零值

判断一个数值是不是等于0

  1. > (zerop 0)
  2. T
  3. > (zerop -0.0)
  4. > (zerop +0.0)

plusp 正数

判断参数是否 > 0

minusp 负数

判断参数是否 < 0

oddp 和 evenp

max 和 min

1- 和 1+

incf 和 decf

逻辑运算

  1. > (> 2 2.0)
  2. NIL
  3. > (>= 2 2.0)
  4. T
  5. > (< 2 2.0)
  6. NIL
  7. > (<= 2 2.0)
  8. T
  9. > (= 2 2.0)
  10. T
  11. > (/= 2 2.0)
  12. NIL

算术运算

  1. ;;; Basic arithmetic operations
  2. (+ 1 1) ; => 2
  3. (- 8 1) ; => 7
  4. (* 10 2) ; => 20
  5. (expt 2 3) ; => 8
  6. (mod 5 2) ; => 1
  7. (/ 35 5) ; => 7
  8. (/ 1 3) ; => 1/3
  9. (+ #C(1 2) #C(6 -4)) ; => #C(7 -2)

要决定计算过程会返回何种数字,通用法则:

如果数值函数接受一个或多个浮点数作为参数,则返回值会是浮点数 (或是由浮点数组成的复数)。所以 (+ 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)

文档更新时间: 2019-07-16 12:27   作者:admin