LISP - Sayılar
Common Lisp birkaç çeşit sayı tanımlar. number veri türü, LISP tarafından desteklenen çeşitli sayı türlerini içerir.
LISP tarafından desteklenen numara türleri şunlardır:
- Integers
- Ratios
- Kayan nokta sayıları
- Karışık sayılar
Aşağıdaki diyagram, LISP'de bulunan sayı hiyerarşisini ve çeşitli sayısal veri türlerini göstermektedir -
LISP'de Çeşitli Sayısal Türler
Aşağıdaki tablo, LISP'de bulunan çeşitli numara türü verilerini açıklamaktadır -
Sr.No. | Veri türü ve Açıklama |
---|---|
1 | fixnum Bu veri türü, çok büyük olmayan ve çoğunlukla -215 ila 215-1 aralığındaki tam sayıları temsil eder (makineye bağlıdır) |
2 | bignum Bunlar, LISP için ayrılan bellek miktarı ile sınırlı boyuta sahip çok büyük sayılardır, sabit sayılar değildirler. |
3 | ratio Pay / payda formundaki iki sayının oranını temsil eder. / İşlevi, bağımsız değişkenleri tam sayı olduğunda, sonucu daima oranlarda üretir. |
4 | float Tam sayı olmayan sayıları temsil eder. Artan hassasiyete sahip dört kayan veri türü vardır. |
5 | complex #C ile gösterilen karmaşık sayıları temsil eder. Gerçek ve sanal kısımlar hem rasyonel hem de kayan nokta sayıları olabilir. |
Misal
Main.lisp adında yeni bir kaynak kodu dosyası oluşturun ve içine aşağıdaki kodu yazın.
(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
(terpri)
(write ( + #c( 1 2) #c( 3 -4)))
Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -
1/2
5/4
#C(4 -2)
Sayı İşlevleri
Aşağıdaki tablo yaygın olarak kullanılan bazı sayısal işlevleri açıklamaktadır -
Sr.No. | İşlev ve Açıklama |
---|---|
1 | +, -, *, / İlgili aritmetik işlemler |
2 | sin, cos, tan, acos, asin, atan İlgili trigonometrik fonksiyonlar. |
3 | sinh, cosh, tanh, acosh, asinh, atanh İlgili hiperbolik işlevler. |
4 | exp Üs alma işlevi. E x'i hesaplar |
5 | expt Üs alma fonksiyonu, hem temel hem de güç alır. |
6 | sqrt Bir sayının karekökünü hesaplar. |
7 | log Logaritmik fonksiyon. Bir parametre verilir, sonra doğal logaritmasını hesaplar, aksi takdirde ikinci parametre temel olarak kullanılır. |
8 | conjugate Bir sayının karmaşık eşleniğini hesaplar. Gerçek sayı olması durumunda, sayının kendisini döndürür. |
9 | abs Bir sayının mutlak değerini (veya büyüklüğünü) döndürür. |
10 | gcd Verilen sayıların en büyük ortak bölenini hesaplar. |
11 | lcm Verilen sayıların en küçük ortak katını hesaplar. |
12 | isqrt Belirli bir doğal sayının tam karekökünden küçük veya ona eşit en büyük tamsayıyı verir. |
13 | floor, ceiling, truncate, round Tüm bu işlevler sayı olarak iki bağımsız değişken alır ve bölümü döndürür; floor orandan büyük olmayan en büyük tamsayıyı döndürür, ceiling orandan büyük olan daha küçük tamsayıyı seçer, truncate Oranın mutlak değerinden daha küçük olan en büyük mutlak değere sahip oran olarak aynı işaretin tamsayısını seçer ve round orana en yakın olan bir tamsayı seçer. |
14 | ffloor, fceiling, ftruncate, fround Yukarıdakinin aynısını yapar, ancak bölümü kayan nokta sayısı olarak döndürür. |
15 | mod, rem Bölme işleminde kalanı döndürür. |
16 | float Gerçek bir sayıyı kayan noktalı sayıya dönüştürür. |
17 | rational, rationalize Gerçek bir sayıyı rasyonel sayıya çevirir. |
18 | numerator, denominator Rasyonel bir sayının ilgili kısımlarını verir. |
19 | realpart, imagpart Karmaşık bir sayının gerçek ve sanal kısmını döndürür. |
Misal
Main.lisp adında yeni bir kaynak kodu dosyası oluşturun ve içine aşağıdaki kodu yazın.
(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))
Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -
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