ฉันเพิ่งสังเกตเห็นว่าการint()
ปัดเศษเป็นทศนิยมให้เป็น 0 ในขณะที่การแบ่งจำนวนเต็มปัดลอยไปทางพื้น
เช่น:
-7 // 2 = -4
int(-7/2) = -3
ฉันได้อ่านเอกสารที่ระบุว่า:
คลาส int (x, ฐาน = 10)
ส่งคืนวัตถุจำนวนเต็มที่สร้างจากตัวเลขหรือสตริง x หรือส่งคืน 0 หากไม่มีการระบุอาร์กิวเมนต์ ถ้า x เป็นตัวเลขให้ส่งคืน x int () สำหรับจำนวนจุดลอยตัวสิ่งนี้จะตัดให้เหลือศูนย์
และ:
การแบ่งชั้น
ส่วนคณิตศาสตร์ที่ปัดเศษลงเป็นจำนวนเต็มที่ใกล้เคียงที่สุด ตัวดำเนินการหารพื้นคือ // ตัวอย่างเช่นนิพจน์ 11 // 4 ประเมินเป็น 2 ตรงกันข้ามกับ 2.75 ที่ส่งกลับโดยการหารทรูที่แท้จริง โปรดทราบว่า (-11) // 4 คือ -3 เพราะนั่นคือ -2.75 ปัดเศษลง ดู PEP 238
แต่ดูเหมือนไม่มีเหตุผลสำหรับฉันว่าการดำเนินการ 2 อย่างที่คล้ายกัน (การหารทศนิยมเป็นจำนวนเต็ม) ควรให้ผลลัพธ์ที่แตกต่างกัน
มีแรงจูงใจสำหรับความแตกต่างระหว่างฟังก์ชั่นหรือไม่?
ขอบคุณ.