LISP - Số

Lisp chung xác định một số loại số. Cácnumber kiểu dữ liệu bao gồm nhiều loại số khác nhau được hỗ trợ bởi LISP.

Các loại số được LISP hỗ trợ là -

  • Integers
  • Ratios
  • Số dấu phẩy động
  • Số phức

Sơ đồ sau đây cho thấy hệ thống phân cấp số và các kiểu dữ liệu số khác nhau có sẵn trong LISP -

Các kiểu số khác nhau trong LISP

Bảng sau đây mô tả dữ liệu kiểu số khác nhau có sẵn trong LISP:

Sr.No. Kiểu dữ liệu & Mô tả
1

fixnum

Kiểu dữ liệu này đại diện cho các số nguyên không quá lớn và chủ yếu nằm trong phạm vi -215 đến 215-1 (nó phụ thuộc vào máy)

2

bignum

Đây là những con số rất lớn với kích thước bị giới hạn bởi lượng bộ nhớ được cấp phát cho LISP, chúng không phải là số cố định.

3

ratio

Biểu diễn tỷ số của hai số ở dạng tử số / mẫu số. Hàm / luôn tạo ra kết quả theo tỷ lệ, khi các đối số của nó là số nguyên.

4

float

Nó đại diện cho các số không phải số nguyên. Có bốn kiểu dữ liệu float với độ chính xác ngày càng tăng.

5

complex

Nó đại diện cho các số phức, được ký hiệu là #c. Phần thực và phần ảo có thể là số hữu tỉ hoặc số dấu phẩy động.

Thí dụ

Tạo một tệp mã nguồn mới có tên main.lisp và nhập mã sau vào đó.

(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
(terpri)
(write ( + #c( 1 2) #c( 3 -4)))

Khi bạn thực thi mã, nó trả về kết quả sau:

1/2
5/4
#C(4 -2)

Hàm số

Bảng sau đây mô tả một số hàm số thường được sử dụng:

Sr.No. Mô tả chức năng
1

+, -, *, /

Các phép toán số học tương ứng

2

sin, cos, tan, acos, asin, atan

Các hàm lượng giác tương ứng.

3

sinh, cosh, tanh, acosh, asinh, atanh

Các hàm hyperbolic tương ứng.

4

exp

Hàm lũy thừa. Tính e x

5

expt

Hàm lũy thừa, lấy cả cơ số và lũy thừa.

6

sqrt

Nó tính căn bậc hai của một số.

7

log

Hàm lôgarit. Một tham số được đưa ra, sau đó nó tính toán lôgarit tự nhiên của nó, nếu không tham số thứ hai được sử dụng làm cơ số.

số 8

conjugate

Nó tính toán liên hợp phức tạp của một số. Trong trường hợp là một số thực, nó trả về chính số đó.

9

abs

Nó trả về giá trị tuyệt đối (hoặc độ lớn) của một số.

10

gcd

Nó tính ước số chung lớn nhất của các số đã cho.

11

lcm

Nó tính bội số chung nhỏ nhất của các số đã cho.

12

isqrt

Nó cho số nguyên lớn nhất nhỏ hơn hoặc bằng căn bậc hai chính xác của một số tự nhiên nhất định.

13

floor, ceiling, truncate, round

Tất cả các hàm này nhận hai đối số là một số và trả về thương số; floor trả về số nguyên lớn nhất không lớn hơn tỷ lệ, ceiling chọn số nguyên nhỏ hơn lớn hơn tỷ lệ, truncate chọn số nguyên của cùng dấu làm tỷ lệ có giá trị tuyệt đối lớn nhất nhỏ hơn giá trị tuyệt đối của tỷ lệ và round chọn một số nguyên gần nhất với tỷ lệ.

14

ffloor, fceiling, ftruncate, fround

Thực hiện tương tự như trên, nhưng trả về thương số dưới dạng số dấu phẩy động.

15

mod, rem

Trả về phần còn lại trong một phép toán chia.

16

float

Chuyển đổi một số thực thành một số dấu phẩy động.

17

rational, rationalize

Chuyển một số thực thành số hữu tỉ.

18

numerator, denominator

Trả về các phần tương ứng của một số hữu tỉ.

19

realpart, imagpart

Trả về phần thực và phần ảo của một số phức.

Thí dụ

Tạo một tệp mã nguồn mới có tên main.lisp và nhập mã sau vào đó.

(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))

Khi bạn thực thi mã, nó trả về kết quả sau:

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