LISP - 數位


Common Lisp定義了幾種數位。數位資料型別包括由LISP支援各種數位。

通過LISP支援數型別是:

  • Integers

  • Ratios

  • Floating-yiibai numbers

  • Complex numbers

下圖顯示的數量和層次在LISP提供的各種數位資料型別:

Numeric Types

在LISP各種數值型別

下表描述了LISP語言提供的各種數位型別的資料:

Data type 描述
fixnum 這個資料型別表示的整數哪些不是太大,大多在範圍-215到215-1(它是依賴於機器)
bignum 這些都是非常大的數位有大小受限於記憶體中分配LISP量,它們不是長整數數位。
ratio 表示兩個數中的分子/分母形式的比率。在/函式總是產生結果的比率,當其引數都是整數。
float 它表示非整數。還有隨著精密四個浮點資料型別。
complex 它表示複數,這是由#C表示。實部和虛部可以是兩者或者理性或浮點數。

範例

建立一個名為main.lisp一個新的原始碼檔案,並在其中輸入如下程式碼:

(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
(terpri)
(write ( + #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一個新的原始碼檔案,並在其中輸入如下程式碼:

(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