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ị.
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)Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3Triể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ìm hiểu các kỹ thuật định dạng chuỗi tốt nhất trong Python. So sánh các chuỗi f, định dạng() và định dạng phần trăm hiện đại với các ví dụ về mã.
Cách chuyển đổi chuỗi thành int trong PythonTìm hiểu cách chuyển đổi một chuỗi thành số nguyên trong Python bằng hàm int(). Xử lý lỗi một cách an toàn và chuyển đổi số từ nhị phân, bát phân hoặc thập lục phân.
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.
Giải thích về biến và kiểu dữ liệu trong Python
Hiểu các biến Python và các kiểu dữ liệu cốt lõi (chuỗi, số nguyên, số float, boolean). Hướng dẫn đầy đủ cho người mới bắt đầu về gán bộ nhớ trong Python.
Bảng cheat phương pháp từ điển Python
Tìm hiểu các phương pháp từ điển Python. Hướng dẫn tham khảo đầy đủ về việc chèn, truy xuất, cập nhật và kiểm tra cặp khóa-giá trị.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.