MATLAB - Số
MATLAB hỗ trợ các lớp số khác nhau bao gồm các số nguyên có dấu và không dấu và các số dấu phẩy động chính xác đơn và chính xác kép. Theo mặc định, MATLAB lưu trữ tất cả các giá trị số dưới dạng số dấu chấm động có độ chính xác kép.
Bạn có thể chọn lưu trữ bất kỳ số hoặc mảng số nào dưới dạng số nguyên hoặc số chính xác đơn.
Tất cả các kiểu số đều hỗ trợ các phép toán mảng và phép toán cơ bản.
Chuyển đổi sang các loại dữ liệu số khác nhau
MATLAB cung cấp các hàm sau để chuyển đổi sang các kiểu dữ liệu số khác nhau:
Chức năng | Mục đích |
---|---|
gấp đôi | Chuyển đổi thành số chính xác gấp đôi |
Độc thân | Chuyển đổi thành số chính xác duy nhất |
int8 | Chuyển đổi thành số nguyên có dấu 8 bit |
int16 | Chuyển đổi thành số nguyên có dấu 16 bit |
int32 | Chuyển đổi thành số nguyên có dấu 32 bit |
int64 | Chuyển đổi thành số nguyên có dấu 64 bit |
uint8 | Chuyển đổi thành số nguyên không dấu 8 bit |
uint16 | Chuyển đổi thành số nguyên không dấu 16 bit |
uint32 | Chuyển đổi thành số nguyên không dấu 32 bit |
uint64 | Chuyển đổi thành số nguyên không dấu 64 bit |
Thí dụ
Tạo tệp kịch bản và nhập mã sau:
x = single([5.32 3.47 6.28]) .* 7.5
x = double([5.32 3.47 6.28]) .* 7.5
x = int8([5.32 3.47 6.28]) .* 7.5
x = int16([5.32 3.47 6.28]) .* 7.5
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
Khi bạn chạy tệp, nó hiển thị kết quả sau:
x =
39.900 26.025 47.100
x =
39.900 26.025 47.100
x =
38 23 45
x =
38 23 45
x =
38 23 45
x =
38 23 45
Thí dụ
Hãy để chúng tôi mở rộng ví dụ trước hơn một chút. Tạo tệp kịch bản và nhập mã sau:
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
x = num2cell(x)
Khi bạn chạy tệp, nó hiển thị kết quả sau:
x =
38 23 45
x =
38 23 45
x =
{
[1,1] = 38
[1,2] = 23
[1,3] = 45
}
Số nguyên nhỏ nhất và lớn nhất
Chức năng intmax() và intmin() trả về giá trị lớn nhất và nhỏ nhất có thể được biểu diễn với tất cả các loại số nguyên.
Cả hai hàm đều lấy kiểu dữ liệu số nguyên làm đối số, ví dụ, intmax (int8) hoặc intmin (int64) và trả về giá trị lớn nhất và nhỏ nhất mà bạn có thể đại diện cho kiểu dữ liệu số nguyên.
Thí dụ
Ví dụ sau minh họa cách lấy giá trị nhỏ nhất và lớn nhất của số nguyên. Tạo một tệp script và viết đoạn mã sau vào đó:
% displaying the smallest and largest signed integer data
str = 'The range for int8 is:\n\t%d to %d ';
sprintf(str, intmin('int8'), intmax('int8'))
str = 'The range for int16 is:\n\t%d to %d ';
sprintf(str, intmin('int16'), intmax('int16'))
str = 'The range for int32 is:\n\t%d to %d ';
sprintf(str, intmin('int32'), intmax('int32'))
str = 'The range for int64 is:\n\t%d to %d ';
sprintf(str, intmin('int64'), intmax('int64'))
% displaying the smallest and largest unsigned integer data
str = 'The range for uint8 is:\n\t%d to %d ';
sprintf(str, intmin('uint8'), intmax('uint8'))
str = 'The range for uint16 is:\n\t%d to %d ';
sprintf(str, intmin('uint16'), intmax('uint16'))
str = 'The range for uint32 is:\n\t%d to %d ';
sprintf(str, intmin('uint32'), intmax('uint32'))
str = 'The range for uint64 is:\n\t%d to %d ';
sprintf(str, intmin('uint64'), intmax('uint64'))
Khi bạn chạy tệp, nó hiển thị kết quả sau:
ans = The range for int8 is:
-128 to 127
ans = The range for int16 is:
-32768 to 32767
ans = The range for int32 is:
-2147483648 to 2147483647
ans = The range for int64 is:
0 to 0
ans = The range for uint8 is:
0 to 255
ans = The range for uint16 is:
0 to 65535
ans = The range for uint32 is:
0 to -1
ans = The range for uint64 is:
0 to 18446744073709551616
Số dấu chấm động nhỏ nhất và lớn nhất
Chức năng realmax() và realmin() trả về giá trị lớn nhất và nhỏ nhất có thể được biểu diễn bằng số dấu phẩy động.
Cả hai hàm khi được gọi với đối số 'single', đều trả về giá trị lớn nhất và nhỏ nhất mà bạn có thể biểu diễn với kiểu dữ liệu độ chính xác đơn và khi được gọi với đối số 'double', trả về giá trị lớn nhất và nhỏ nhất mà bạn có thể đại diện kiểu dữ liệu độ chính xác kép.
Thí dụ
Ví dụ sau minh họa cách lấy số dấu phẩy động nhỏ nhất và lớn nhất. Tạo một tệp script và viết đoạn mã sau vào đó:
% displaying the smallest and largest single-precision
% floating point number
str = 'The range for single is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('single'), -realmin('single'), ...
realmin('single'), realmax('single'))
% displaying the smallest and largest double-precision
% floating point number
str = 'The range for double is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('double'), -realmin('double'), ...
realmin('double'), realmax('double'))
Khi bạn chạy tệp, nó sẽ hiển thị kết quả sau:
ans = The range for single is:
-3.40282e+38 to -1.17549e-38 and
1.17549e-38 to 3.40282e+38
ans = The range for double is:
-1.79769e+308 to -2.22507e-308 and
2.22507e-308 to 1.79769e+308