鍍金池/ 教程/ Java/ LISP - 數(shù)字
LISP - 樹
LISP - 錯(cuò)誤處理
LISP - 謂詞
LISP - 決策
LISP - 變量
LISP - 數(shù)組
LISP - 對(duì)象系統(tǒng)(CLOS)
LISP - 輸入和輸出
Lisp教程
LISP - 數(shù)字
LISP - 循環(huán)
LISP - 常量
LISP - 集合
LISP - 字符
LISP - 程序結(jié)構(gòu)
LISP - 文件I/O
LISP - 哈希表
LISP - 宏
LISP - 數(shù)據(jù)類型
LISP - 包
LISP - 符號(hào)
LISP - 運(yùn)算符
LISP - 基本語法
LISP - 函數(shù)
LISP - 向量
LISP - 結(jié)構(gòu)
LISP - 概述介紹

LISP - 數(shù)字

Common Lisp定義了幾種數(shù)字。數(shù)字?jǐn)?shù)據(jù)類型包括由LISP支持各種數(shù)字。

通過LISP支持?jǐn)?shù)類型是:

  • Integers

  • Ratios

  • Floating-yiibai numbers

  • Complex numbers

下圖顯示的數(shù)量和層次在LISP提供的各種數(shù)字?jǐn)?shù)據(jù)類型:

Numeric Types

在LISP各種數(shù)值類型

下表描述了LISP語言提供的各種數(shù)字類型的數(shù)據(jù):

Data type 描述
fixnum 這個(gè)數(shù)據(jù)類型表示的整數(shù)哪些不是太大,大多在范圍-215到215-1(它是依賴于機(jī)器)
bignum 這些都是非常大的數(shù)字有大小受限于內(nèi)存中分配LISP量,它們不是長整數(shù)數(shù)字。
ratio 表示兩個(gè)數(shù)中的分子/分母形式的比率。在/函數(shù)總是產(chǎn)生結(jié)果的比率,當(dāng)其參數(shù)都是整數(shù)。
float 它表示非整數(shù)。還有隨著精密四個(gè)浮點(diǎn)數(shù)據(jù)類型。
complex 它表示復(fù)數(shù),這是由#C表示。實(shí)部和虛部可以是兩者或者理性或浮點(diǎn)數(shù)。

示例

創(chuàng)建一個(gè)名為main.lisp一個(gè)新的源代碼文件,并在其中輸入如下代碼:

(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
(terpri)
(write ( + #c( 1 2) #c( 3 -4)))

當(dāng)執(zhí)行以上代碼,它返回以下結(jié)果:

1/2
5/4
#C(4 -2)

數(shù)字函數(shù)

下表描述了一些常用的數(shù)值函數(shù):

Function 描述
+, -, *, / 各算術(shù)運(yùn)算
sin, cos, tan, acos, asin, atan 相應(yīng)的三角函數(shù)
sinh, cosh, tanh, acosh, asinh, atanh 相應(yīng)的雙曲函數(shù)
exp 冪函數(shù),計(jì)算 ex
expt 冪函數(shù),需要基礎(chǔ)和冪兩者
sqrt 它可以計(jì)算一個(gè)數(shù)的平方根
log 對(duì)數(shù)函數(shù)。它的一個(gè)參數(shù)給出,則它計(jì)算其自然對(duì)數(shù),否則將第二個(gè)參數(shù)被用作基數(shù)
conjugate 它計(jì)算一個(gè)數(shù)的復(fù)共軛,如有任何實(shí)數(shù),它返回?cái)?shù)字本身
abs 它返回一個(gè)數(shù)的絕對(duì)值(或幅度)
gcd 它可以計(jì)算給定數(shù)字的最大公約數(shù)
lcm 它可以計(jì)算給定數(shù)的最小公倍數(shù)
isqrt 它提供了最大的整數(shù)小于或等于一個(gè)給定的自然數(shù)的精確平方根。
floor, ceiling, truncate, round 所有這些函數(shù)把一個(gè)數(shù)字的兩個(gè)參數(shù),并返回商;地面返回的最大整數(shù)不大于比,天花板選擇較小的整數(shù),它比比率越大,截?cái)噙x擇相同符號(hào)的整數(shù)的比值與最大的絕對(duì)值是小于的比值的絕對(duì)值,與圓公司選用一個(gè)整數(shù),它是最接近比值
ffloor, fceiling, ftruncate, fround 確實(shí)與上述相同,但返回的商作為一個(gè)浮點(diǎn)數(shù)
mod, rem 返回除法運(yùn)算的余數(shù)
float 將實(shí)數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)
rational, rationalize 將實(shí)數(shù)轉(zhuǎn)換為有理數(shù)
numerator, denominator 返回有理數(shù)的各個(gè)部分
realpart, imagpart 返回一個(gè)復(fù)數(shù)的實(shí)部和虛部

示例

創(chuàng)建一個(gè)名為main.lisp一個(gè)新的源代碼文件,并在其中輸入如下代碼:

(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))

當(dāng)執(zhí)行以上代碼,它返回以下結(jié)果:

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

上一篇:LISP - 運(yùn)算符下一篇:LISP - 常量