LISP - 數字

Common Lisp定義了幾種數字。數字數據類型包括由LISP支持各種數字。

通過LISP支持數類型是:

  • Integers

  • Ratios

  • Floating-yiibai numbers

  • Complex numbers

下圖顯示的數量和層次在LISP提供的各種數字數據類型:

Numeric

在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