Cách làm tròn số trong Python (Hàm round() & thập phân)

Tìm hiểu cách làm tròn số dấu phẩy động trong Python. Hiểu cách làm tròn, độ chính xác thập phân tùy chỉnh và định dạng nổi của Banker để hiển thị.

Hãy thử Giải pháp này trong Trình chỉnh sửa

Tổng quan

Số học dấu phẩy động trong máy tính đôi khi có thể dẫn đến các vấn đề về độ chính xác không mong muốn do cách hệ thống nhị phân lưu trữ số thập phân (ví dụ: `0,1 + 0,2` đánh giá thành `0,300000000000000004`). Khi hiển thị số cho người dùng hoặc chuẩn bị số liệu, làm tròn số là yêu cầu phổ biến. Python cung cấp một số cách để đạt được điều này.

Công cụ chính là hàm `round(number, ndigits)` được tích hợp sẵn. Phải mất một số và số lượng chính xác tùy chọn. Nếu `ndigits` bị bỏ qua, nó sẽ làm tròn đến số nguyên gần nhất. Nếu `ndigits` được cung cấp, nó sẽ làm tròn đến số vị trí thập phân đó.

Thuộc tính quan trọng của hàm `round()` của Python là nó sử dụng "Làm tròn ngân hàng" (làm tròn một nửa thành chẵn). Khi một số nằm chính xác ở giữa hai số nguyên (ví dụ: `2,5` hoặc `3,5`), Python sẽ làm tròn đến số *chẵn* gần nhất. Điều này có nghĩa là `round(2.5)` là `2` và `round(3.5)` là `4`. Mặc dù công bằng về mặt toán học đối với các tập dữ liệu lớn để tránh sai lệch tăng lên, nhưng để tính toán tài chính chính xác, bạn nên sử dụng các công cụ lượng tử hóa của mô-đun `thập phân`.

Đầu ra mã & thực thi

Tập lệnh này thể hiện các số thực làm tròn bằng cách sử dụng hàm làm tròn tích hợp, các ví dụ làm tròn của Banker và mô-đun thập phân.

from decimal import Decimal, ROUND_HALF_UP

val = 3.14159

# 1. Round to nearest integer
print("Nearest Integer:", round(val))

# 2. Round to 2 decimal places
print("Two decimals:", round(val, 2))

# 3. Banker's Rounding demonstration (rounds to nearest even)
print("round(2.5):", round(2.5)) # Nearest even is 2
print("round(3.5):", round(3.5)) # Nearest even is 4

# 4. Math rounding up (Traditional rounding) using decimal module
amount = Decimal("2.5")
rounded_up = amount.quantize(Decimal("1"), rounding=ROUND_HALF_UP)
print("Decimal ROUND_HALF_UP (2.5):", rounded_up)
Đầu ra thiết bị đầu cuối
Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3

Triển khai từng bước

  • Gọi hàm round(number) tích hợp để làm tròn số float đến số nguyên gần nhất.
  • Truyền đối số thứ hai (ví dụ: round(num, 2)) để chỉ định số vị trí thập phân cần giữ.
  • Sử dụng mô-đun thập phân với ROUND_HALF_UP để tính toán làm tròn tài chính một cách nghiêm ngặt.

Câu hỏi thường gặp

Tại sao vòng (2.5) trả về 2 thay vì 3 trong Python?

Python sử dụng phương pháp làm tròn của Banker, làm tròn một nửa số thành số nguyên chẵn gần nhất. Điều này làm giảm sai lệch thống kê (làm tròn một nửa số luôn gây ra sự chênh lệch tăng nhẹ trên các tập dữ liệu lớn).

Làm cách nào để làm tròn một số luôn lên hoặc luôn xuống?

Nhập mô-đun toán học và sử dụng math.ceil(x) để làm tròn đến số nguyên tiếp theo hoặc math.floor(x) để làm tròn xuống số nguyên trước đó.

Chủ đề liên quan

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.