Tôi đã cố gắng bình thường hóa một tập hợp các số từ -100 đến 0 thành phạm vi 10-100 và chỉ gặp vấn đề khi nhận thấy rằng ngay cả khi không có biến nào, điều này không đánh giá theo cách tôi mong đợi:
>>> (20-10) / (100-10)
0
Bộ phận nổi cũng không hoạt động:
>>> float((20-10) / (100-10))
0.0
Nếu một trong hai bên của phân chia được thả nổi, nó sẽ hoạt động:
>>> (20-10) / float((100-10))
0.1111111111111111
Mỗi bên trong ví dụ đầu tiên được đánh giá là một int có nghĩa là câu trả lời cuối cùng sẽ được chuyển thành int. Vì 0.111 nhỏ hơn 0,5, nó làm tròn thành 0. Nó không minh bạch theo quan điểm của tôi, nhưng tôi đoán đó là như vậy.
Giải thích là gì?