Các Vấn Đề Thường Gặp trong Python - [3] Kiểu Dữ Liệu Số Thực

By JoeVu, at: 14:30 Ngày 12 tháng 1 năm 2023

Thời gian đọc ước tính: __READING_TIME__ phút

Common Python Problems - [3] Float Data Types
Common Python Problems - [3] Float Data Types

1. Sai số trong phép tính số dấu phẩy động

 

Ví dụ 1

 

x = 1/10
y = 1/5
z = x + y
print(z)  # kết quả mong đợi là 0.3

 

Kết quả

 

0.30000000000000004

 

Giải pháp: Sử dụng module decimal trong Python, ta có thể biểu diễn chính xác các giá trị thập phân và tránh sai số dấu phẩy động. 

 

from decimal import Decimal
x = Decimal("1") / Decimal("10")
y = Decimal("1") / Decimal("5")
z = x + y
print(z)  # kết quả mong đợi là 0.3

 

Kết quả

 

0.3

 

2. Lỗi tràn số

 

Ví dụ 1

 

Một ví dụ về lỗi tràn số float trong Python được thể hiện bên dưới:

 

num1 = 9e309
num2 = 2
result = num1 * num2
print(result)

 

Kết quả

 

inf

 

Giải pháp: Python sẽ gây ra lỗi OverflowError khi giá trị của một số float quá lớn. Để tránh lỗi này, bạn có thể sử dụng module Decimal để xử lý các số lớn và ngăn chặn lỗi tràn số float. Ví dụ:

 

num1 = Decimal("9e309")
num2 = Decimal(2)
result = num1 * num2
print(result)

 

Kết quả

 

1.8E+310

 

3. Lỗi làm tròn

 

Ví dụ 1

 

# Chúng ta đang cố tính toán 0.1 + 0.2
x = 1/10
y = 1/5
z = x + y
print(z)

 

Kết quả

 

0.30000000000000004

 

Giải pháp: Chúng ta có thể sử dụng hàm round() để làm tròn kết quả

 

x = 1/10
y = 1/5
z = x + y
rounded_z = round(z, 2)
print(rounded_z)

 

Kết quả

 

0.3
Tag list:
- Python
- Mistake
- Problem
- Float Data Type
- Decimal

Theo dõi

Theo dõi bản tin của chúng tôi và không bao giờ bỏ lỡ những tin tức mới nhất.