Gần đây tôi đã nhận thấy rằng làm int()
tròn một số float về 0, trong khi phép chia số nguyên làm tròn một số float về phía sàn của nó.
ví dụ:
-7 // 2 = -4
int(-7/2) = -3
Tôi đã đọc tài liệu chỉ định:
lớp int (x, cơ sở = 10)
Trả về một đối tượng số nguyên được xây dựng từ một số hoặc chuỗi x hoặc trả về 0 nếu không có đối số nào được đưa ra. Nếu x là một số, trả về x. int (). Đối với số dấu phẩy động, phần này cắt về không.
và:
phân chia sàn
Phân chia toán học làm tròn xuống số nguyên gần nhất. Toán tử phân chia tầng là //. Ví dụ: biểu thức 11 // 4 ước tính là 2 trái ngược với 2,75 được trả về bởi phép chia float thực. Lưu ý rằng (-11) // 4 là -3 vì đó là -2,75 được làm tròn xuống. Xem PEP 238.
Nhưng có vẻ phi logic đối với tôi rằng 2 phép toán tương tự (phép chia float thành số nguyên) sẽ trả về các kết quả khác nhau.
Có bất kỳ động lực cho sự khác biệt giữa các chức năng?
Cảm ơn bạn.