Các Kiểu Dữ Liệu Số Trong Python
Có thể bạn quan tâm
Trong bài học này chúng ta sẽ xem xét chi tiết các kiểu dữ liệu số trong Python, bao gồm int, float và complex. Chúng ta cũng xem xét một số phép toán và hàm thường gặp với dữ liệu kiểu số. So với các ngôn ngữ lập trình như C# hay Java, các kiểu số trong Python đơn giản hơn (ít kiểu) nhưng lại có điểm đặc thù. Các phép toán cơ bản của Python khá tương tự như trong C và các ngôn ngữ khác.
NỘI DUNG CỦA BÀI Ẩn 1. Giới thiệu chung về các kiểu số trong Python 2. Kiểu số nguyên int 3. Kiểu số thực float 4. Kiểu số phức complex 5. Các phép toán trên kiểu số 6. Kết luậnGiới thiệu chung về các kiểu số trong Python
Số là kiểu dữ liệu cơ bản nhất trong các ngôn ngữ lập trình. Ngôn ngữ Python hỗ trợ sẵn 3 kiểu số cơ bản: int (số nguyên có dấu lớn tùy ý), float (số thực), complex (số phức).
Python căn cứ vào cách viết (literal) của giá trị để tự xác định kiểu cho giá trị số tương ứng. Ví dụ, a = 10 sẽ tạo ra một số nguyên, b = 10. sẽ tạo ra một số thực, b = 10j sẽ tạo ra một số phức. Chi tiết về cách viết các loại số sẽ trình bày trong các phần tiếp theo của bài học.
Python hỗ trợ tất cả các phép toán số học toán cơ bản (+, -, *, /, v.v.) trên các kiểu số cũng như các phép toán phức tạp hơn (ở dạng các hàm) trong module math (như log, sin, cos, v.v.). Ngoài ra Python cũng rất nổi tiếng về các thư viện hỗ trợ tính toán do cộng đồng cung cấp.
Một đặc điểm quan trọng của kiểu số trong Python là tính bất biến (immutability). Nghĩa là giá trị số một khi đã tạo ra trong bộ nhớ (và có biến tham chiếu tới), nó sẽ không thay đổi được nữa. Nếu bạn thay đổi giá trị của một số, trên thực tế Python sẽ tạo ra một giá trị mới trong bộ nhớ.
Ví dụ nếu ban đầu bạn tạo một giá trị số qua lệnh gán a = 10, Python sẽ tạo một giá trị 10 trong bộ nhớ và để a trỏ vào giá trị này. Nếu sau đó bạn lại gán a = 10j (số phức), Python không hề thay đổi giá trị số mà a trỏ tới. Thay vào đó Python sẽ tạo một giá trị mới 10j trong bộ nhớ và để a trỏ tới giá trị mới này. Giá trị cũ 10 sẽ không còn được tham chiếu tới nữa. Sau một thời gian Garbage Collector sẽ dọn dẹp giá trị này để thu hồi bộ nhớ.
Nếu bạn đã học lập trình C# thì string cũng là một kiểu dữ liệu bất biến như vậy. Mọi thay đổi trên một xâu đều dẫn đến tạo ra xâu mới.
Kiểu số nguyên int
Kiểu int biểu diễn các số nguyên có dấu với độ lớn tùy ý. Kiểu int trong Python không sử dụng số bit cố định để biểu diễn như trong các ngôn ngữ khác. Tùy thuộc vào giá trị cụ thể Python sẽ chọn số bit phù hợp. Giá trị nguyên lớn nhất mà Python biểu diễn được chỉ phụ thuộc vào bộ nhớ.
Python hỗ trợ biểu diễn số nguyên dương, số nguyên âm, số ở dạng thập phân, hệ cơ số 8, hệ cơ số 16.
Khi biểu diễn số ở cơ số 8 bạn dùng tiếp tố 0o hoặc 0O (số không và chữ o hoa/thường). Khi biểu diễn số ở hệ 16 thì dùng tiếp tố 0x hoặc 0X (số 0 và chữ x/X)
Dưới đây là ví dụ về cách biểu diễn số nguyên trong Python:
Giá trị | Ghi chú |
---|---|
100 | Số nguyên dương |
-100 | Số nguyên âm |
0o100, 0O100 | Số dương ở cơ số 8 (số 64 cơ số 10) |
-0o100, -0O100 | Số âm ở cơ số 8 |
0x100, 0X100 | Số dương ở cơ số 16 (256 cơ số 10) |
-0x100, -0X100 | Số âm ở cơ số 16 |
Chú ý khi viết số ở cơ số 8 tốt nhất là dùng chữ o (thường) do chữ O (hoa) rất dễ nhầm lẫn với số 0.
Python cũng cho phép dùng ký tự gạch chân _ để nhóm các chữ số trong biểu diễn số:
>>> i = 1_000_000 # tương đương với 1000000 nhưng dễ đọc hơn nhiều >>> i 1000000Kiểu boolean trong Python cũng là một kiểu con của kiểu số nguyên. Trong đó 0 tương ứng với False, mọi giá trị nguyên khác tương ứng với True.
Chú ý: Python 2.x có hai kiểu số nguyên int và long. Kiểu long cần biểu diễn với hậu tố L (hoặc l). Số nguyên ở hệ cơ số 8 viết bắt đầu bằng 0. Vì vậy, khi đọc tài liệu nên lưu ý xem đó là Python 2 hay Python 3. Hai phiên bản này có nhiều điểm không tương thích.
Để biến đổi từ các kiểu dữ liệu khác về số nguyên bạn có thể sử dụng hàm int(). Ví dụ:
>>> age = int(input("Your age: ")) # chuyển chuỗi về số nguyên Your age: 37 >>> print('You were born in', 2020-age) You were born in 1983 >>>Kiểu số thực float
Trong Python float dùng để biểu diễn số thực dấu phảy động. Để viết số thực trong Python bạn cần đặt 1 dấu chấm thập phân. Dưới đây các cách biểu diễn giá trị thực trong Python:
Giá trị float | Ghi chú |
---|---|
0.0 | Giá trị 0.0 (float) chưa chắc đã bằng 0 (int) |
100.0 | Số thực dương |
-100.0 | Số thực âm |
100e2, -100e2 | Cách viết khoa học, bằng +/- 100 * 10^2 = +/- 10000.0 |
100e-2, -100e-2 | Cách viết khoa học, bằng +/- 100 * 10^-2 = +/- 1.0 |
100., -100. | Không cần viết số 0 sau dấu chấm thập phân, tương đương 100.0, -100.0 |
Bạn có thể xem các thông tin về kiểu float như sau:
>>> import sys >>> sys.float_info sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1) >>> sys.float_info.max # giá trị cực đại của kiểu float 1.7976931348623157e+308 >>> sys.float_info.min # giá trị cực tiểu của kiểu float 2.2250738585072014e-308 >>>Bạn cũng có thể dùng ký tự gạch chân đế nhóm các chữ số khi viết số thực:
>>> i = 1_000_000.001 >>> i 1000000.001Để biến đổi từ kiểu dữ liệu khác về kiểu float bạn có thể sử dụng hàm float().
>>> exchange_rate = float(input("Exchange Rate: ")) Exchange Rate: 23.3 >>> print('USD 100 will be VND', exchange_rate * 100) USD 100 will be VND 2330.0 >>>Trong phép toán mà toán hạng bao gồm cả số thực và số nguyên, kết quả của cả phép toán sẽ thuộc kiểu số thực.
Ví dụ:
>>> 1 + 2.0 # kết quả sẽ thuộc kiểu số thực 3.0 >>> 2 * 3.0 6.0 >>> 3.0 ** 2 9.0Kiểu số phức complex
Python là một trong số ít các ngôn ngữ hỗ trợ trực tiếp kiểu số phức. Tuy nhiên số phức tương đối ít được sử dụng.
Trong toán học, số phức được biểu diễn ở dạng tổng quát a + bi với i là đơn vị ảo. Trong Python, đơn vị ảo được biểu diễn bằng ký tự j hoặc J.
Như vậy, số phức trong Python cần chứa ký tự j (hoặc J) để biểu diễn phần ảo. Dưới đây là ví dụ về cách biểu diễn số phức trong Python:
Giá trị phức | Ghi chú |
---|---|
3.14j | Chỉ có phần ảo (0 + 3.14j) |
45.j | Chính là (0 + 45j) |
3 + 2j | Số phức (3 + 2j) |
1+3.2e25j | Phần ảo biểu diễn ở dạng khoa học |
1+j | Lỗi: j ở đây sẽ hiểu là một biến. Bạn phải viết 1 + 1j |
Lưu ý: j (J) phải đi kèm số thì mới được xem là đơn vị ảo. Nếu đi một mình, j hay J sẽ bị xem là tên biến. Vì vậy 1 + j là một biểu thức (với j là một biến) nhưng 1 + 1j là một số phức.
Để làm việc riêng với phần thực hoặc phần ảo bạn có thể sử dụng cách sau:
>>> c = 1.23 + 4.56j >>> c.real 1.23 >>> c.imag 4.56 >>>real và imag là hai thành viên của kiểu complex giúp bạn trích giá trị của phần nguyên và phần ảo.
Các phép toán trên kiểu số
Python hỗ trợ tất cả các phép toán số học cơ bản trên kiểu số. Đa số các phép toán này có hình thức tương tự như trong C, một số có dạng hơi khác.
Phép toán | Ý nghĩa | Sử dụng | Ví dụ |
---|---|---|---|
+ | Phép cộng số học | a + b | |
– | Phép trừ số học | a – b | |
* | Phép nhân số học | a * b | |
/ | Phép chia số học | a / b | |
% | Phép chia lấy dư | a % b | 4 % 2 = 0, 4 % 3 = 1 |
** | Phép lũy thừa | a ** b | 2 ** 3 = 8 |
// | Phép chia lấy phần nguyên | a // b | 9 // 2 = 4, 11 / 3 = 3, -11//3 = -4 |
Các phép so sánh có thể áp dụng trên tất cả các kiểu số. Kết quả của phép toán so sánh thuộc về kiểu boolean (True/False).
Phép toán | Ý nghĩa | Sử dụng |
---|---|---|
== | So sánh bằng | a == b |
!= | So sánh khác | a != b |
> | So sánh lớn hơn | a > b |
< | So sánh nhỏ hơn | a < b |
>= | Lớn hơn hoặc bằng | a >= b |
<= | Nhỏ hơn hoặc bằng | a <= b |
Lưu ý trong Python 2.x có hai phép toán so sánh khác != và <>. Trong Python 3.x chỉ còn phép so sánh != (như trong C).
Python hỗ trợ các phép toán gán tương tự như trong C:
Phép toán | Cách dùng | Ý nghĩa |
---|---|---|
+= | a += b | tương đương a = a + b |
-= | a -= b | a = a – b |
*= | a *= b | a = a * b |
/= | a /= b | a = a / b |
%= | a %= b | a = a % b |
**= | a **= b | a = a ** b |
//= | a //= b | a = a // b |
Python cung cấp một số hàm xử lý số tích hợp sẵn cho kiểu số:
abs(x) | Lấy giá trị tuyệt đối của x |
int(x) | Chuyển đổi x sang kiểu số nguyên |
float(x) | Chuyển đổi x sang kiểu dố thực |
complex(re, im) | Tạo số phức với phần thực re, phần ảo im. |
divmod(x, y) | Thực hiện cặp phép toán (x // y, x % y), ví dụ divmod(10, 2) cho kết quả (5, 0) |
pow(x, y) | Tương tự x ** y |
hex(x) | Trả về dạng biểu diễn cơ số 16 của số x |
oct(x) | Trả về dạng biểu diễn cơ số 8 của số x |
Nếu bạn cần thực hiện các phép toán phức tạp hơn (như lượng giác, logaritm), bạn có thể sử dụng module math như sau:
import math # sử dụng thư viện math math.sin(180) math.log(1) math.factorial(10)Kết luận
Trong bài học này chúng ta đã xem xét chi tiết các kiểu dữ liệu số trong Python, bao gồm int, float và complex. Chúng ta cũng xem xét một số phép toán thường gặp với dữ liệu kiểu số.
So với các ngôn ngữ lập trình như C# hay Java, các kiểu số trong Python đơn giản hơn (ít kiểu). Tuy nhiên, các kiểu số trong Python lại có điểm đặc thù là bất biến, tương tự như string của C#.
Các phép toán cơ bản của Python khá tương tự như trong C và các ngôn ngữ khác. Python cũng cung cấp thư viện cho các hàm toán học math.
+ Nếu bạn thấy site hữu ích, trước khi rời đi hãy giúp đỡ site bằng một hành động nhỏ để site có thể phát triển và phục vụ bạn tốt hơn.+ Nếu bạn thấy bài viết hữu ích, hãy giúp chia sẻ tới mọi người.+ Nếu có thắc mắc hoặc cần trao đổi thêm, mời bạn viết trong phần thảo luận cuối trang.Cảm ơn bạn!
Từ khóa » Float Là Kiểu Dữ Liệu Gì Trong Python
-
Floating Point Numbers Trong Python: Hướng Dẫn Step-by -Step
-
Kiểu Dữ Liệu Và Các Kiểu Dữ Liệu Trong Python - Viblo
-
Hàm Float() Trong Python
-
Hàm Float() Trong Python
-
Các Kiểu Dữ Liệu (data Type) Cơ Bản Trong Python - Góc Học IT
-
Kiểu Dữ Liệu Cơ Bản Trong Python - Công Ty TNHH 7Host Việt Nam
-
Biến Số Và Kiểu Dữ Liệu Số Trong Python | TopDev
-
Hàm Loat() Trong Python Dùng để Làm Gì? - Freetuts
-
Bài 05: Kiểu Dữ Liệu Cơ Bản Và Khai Báo Biến Trong Python
-
Kiểu Dữ Liệu Số Trong Python | How Kteam
-
Python Data Type - Kiểu Dữ Liệu Trong Python
-
Chuyển đổi Kiểu Dữ Liệu Trong Ngôn Ngữ Python - TEK4
-
Các Kiểu Dữ Liệu Trong Python | Lê Vũ Nguyên Dạy Học Lập Trình
-
Float Trong Python Là Gì - Hỏi Đáp