clisp语言中的数字

发布: 2008-07-23 07:52

1. 数字数据类型

NUMRER , REAL , RATIONAL, INTEGER, FLOAT

2. 数字的概念

数字计算函数:
ext:! 计算数字的阶乘
CL> (! 2)
2
CL> (! 3)
6
CL> (! 30)
265252859812191058636308480000000

EXT:EXQUO 计算两个数字的整数商,如果不能整除,则会报错。(对整除的时候,这个函数比 / 效率高)。
CL> (exquo 6 2)
3
CL> (exquo 6 5)
*** - quotient 6 / 5 is not an integer

XGCD ???没看太明白这个计算什么的。

EXT:MOD-EXPT (mod-expt k l m) 等于 (MOD (EXPT k l) m), 但对大数情况,这个函数更有效率。

浮点数相关函数:
decode-float ???
float-radix 小数位数,总是返回2
FLOAT-DIGITS number digits 将数字number强制转换为至少有digits个尾数的小数。
下面的表达式总是为 T
(>= (FLOAT-DIGITS (FLOAT-DIGITS number digits)) digits)

函数expt 计算乘方
CL> (expt 2 3)
8
CL> (expt 3 2)
9

函数log 计算log值

常量PI, 该值为LONG-FLOAT
CL> (print PI)
3.1415926535897932385L0
3.1415926535897932385L0

复数:
有一个实部,一个虚部。
得数表示为#C(实部 虚部)
CL> (sqrt -9.0)
#C(0 3.0)

使用函数complex可以构造一个得数:
CL> (complex 2 3)
#C(2 3)

随机数:
设置随机数种子,(SETQ *RANDOM-STATE* (MAKE-RANDOM-STATE T))
默认随机数种子固定, 如果不调用设置种子,则产生的随机数也固定。
生成随机数函数:random n , 生成0-n之间的随机数。
CL> (random 199)
67
CL> (random 199)
89


字节类型是内置类型BYTE,而不是INTEGER。


几个数字表示的说明:
3.1415926535897932385L0 L是什么意思?
2.23343s0 这里面的s是什么意思?

s0表示 SHORT-FLOAT
L0表示 LONG-FLOAT
d0表示 DOUBLE-FLOAT
还有一个SINGLE-FLOAT,不知如何表示。


原文: http://qtchina.tk/?q=node/197

Powered by zexport