Bài 21. Dữ liệu kiểu số
Python có 2 loại dữ liệu số học gồm số nguyên, số thực (dấu phẩy động) và số phức. Cùng xem qua các ví dụ dưới đây về các kiểu dữ liệu số:
Số nguyên và số thực được phân biệt bằng cách có hoặc không có dấu thập phân. Ví dụ: 5 là số nguyên trong khi 5.0 là số thực. Số phức được viết dưới dạng x + yj, trong đó x là phần thực và y là phần ảo.
Số nguyên trong Python có thể có độ dài bất kỳ, số thực chỉ giới hạn đến 15 chữ số thập phân.
Trong Python, chúng ta có thể biểu diễn số nhị phân (cơ số 2), hệ thập lục phân (cơ số 16) và hệ bát phân (cơ số 8) bằng cách đặt một tiền tố một cách thích hợp theo quy ước sau:
Binary: '0b' hoặc '0B' Octal: '0o' hoặc '0O' Hexadecimal: '0x' hoặc '0X'
Chuyển đổi kiểu dữ liệu
Python tự động chuyển kiểu int sang float khi thực hiện các phép tính giữa số nguyên và thực. Ví dụ:
Ép kiểu dữ liệu bằng cách khai báo kiểu. Ví dụ:
Số thập phân
Một điều cần chú ý đối với kiểu dữ liệu float trong Python là 1.1 + 2.2 không bằng 3.3!
Nguyên nhân là bởi số thực được lưu trữ trong máy tính dưới dạng phân số nhị phân (0 và 1). Vì vậy hầy hết các phân số không thể biểu diễn chính xác trong máy tính.
Ví dụ, ta không thể biểu diễn chính xác phân số 1/3 bằng số thập phân vì nó sẽ là 0,33333333 ... (dài vô hạn). Tương tự, 0.1 cũng chỉ là biểu diễn gần dúng chứ không hoàn toàn đúng. Đó là lý do vì sáo 1.1+2.2 không = 3.3
Để biểu diễn và tính toán số thực một cách bình thường (như trong toán học) thì ta sử dụng module decimal
Ví dụ:
Khi nào cần dùng decimal thay cho float?
Khi ta thực hiện các ứng dụng tài chính cần biểu diễn số thập phân chính xác.
Khi ta muốn triển khai khái niệm về số thập phân một cách chính xác.
Phân số
Python hỗ trợ module fractions để xử lý phân số. Có nhiều cách để biểu diễn phân số, ví dụ như sau:
Phân số được biểu diễn bởi số nguyên cho cả tử và mẫu hoặc có thể biểu diễn bằng string. Không thể dùng số thực để biểu diễn phân số vì sẽ cho kết quả không đúng. Ví dụ:
Dữ liệu kiểu phân số có thể dùng tất cả các toán tử cơ bản. Ví dụ:
Toán học trong Python
Python cung cấp module như math và random để thực hiện các phép toán khác nhau như lượng giác, logarit, xác suất và thống kê, v.v
Xem thêm về các hàm toán học tại đây: math
Last updated