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