LISP - 數字
Common Lisp定義了幾種數字。數字數據類型包括由LISP支持各種數字。
通過LISP支持數類型是:
Integers
Ratios
Floating-yiibai numbers
Complex numbers
下圖顯示的數量和層次在LISP提供的各種數字數據類型:
在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