位置:首頁 > 高級語言 > Lisp教學 > LISP - 數字

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