ผู้ให้บริการแผนกชั้นของ Python//หารสองตัวเลขและปัดผลลัพธ์ลงไปเป็นจำนวนเต็มที่ใกล้ที่สุด การใช้มันอย่างถูกต้องจะป้องกันข้อบกพร่องในการปัดเศษที่ละเอียดอ่อนโดยเฉพาะอย่างยิ่งเมื่อพอร์ตตรรกะการแบ่งจำนวนเต็มหรือทำงานกับค่าลบ
วิธีที่ 1: คำนวณการแบ่งชั้นด้วย //
ขั้นตอนที่ 1:ใช้//เพื่อให้ได้ความฉลาดที่ปัดเศษลง
print(5 // 2) # 2
print(10 // 3) # 3
print(9 // 0.5) # 18.0 (float operand → float result)
print(8.0 // 3) # 2.0 (still floors)ขั้นตอนที่ 2:ตรวจสอบตัวตนของแผนกa == (a // b) * b + (a % b)-
a, b = 17, 5
print(a == (a // b) * b + (a % b)) # Trueขั้นตอนที่ 3:เปรียบเทียบ/เพื่อดูความแตกต่าง
print(5 / 2) # 2.5 (true division)
print(5 // 2) # 2 (floor division)วิธีที่ 2: แทนที่ int (x / y) ด้วย x // y (เมื่อปลอดภัย)
ขั้นตอนที่ 1:ค้นหาสถานที่ที่คุณแบ่งและแปลงเป็น int ทันที
# Before
mid = int(len(items) / 2)ขั้นตอนที่ 2:แทนที่ด้วยการแบ่งชั้นเพื่อความตั้งใจที่ชัดเจนและการแปลงน้อยลง
อ่านเพิ่มเติม:
# After
mid = len(items) // 2ขั้นตอนที่ 3:เรียกใช้การทดสอบเพื่อยืนยันผลลัพธ์ที่เหมือนกันสำหรับจำนวนบวก
for n in range(1, 11):
a = int(n / 2)
b = n // 2
assert a == bวิธีที่ 3: รับความฉลาดและส่วนที่เหลือร่วมกับ divmod
ขั้นตอนที่ 1:ใช้divmod(a, b)เพื่อให้ได้ทั้งชั้นและโมดูลัสในการโทรครั้งเดียว
duration = 500
minutes, seconds = divmod(duration, 60)
print(f"{minutes}:{seconds}") # 8:20ขั้นตอนที่ 2:โซ่divmodเป็นเวลาหลายชั่วโมงนาทีและวินาที
duration = 9907
minutes, seconds = divmod(duration, 60)
hours, minutes = divmod(minutes, 60)
print(f"{hours}:{minutes:02d}:{seconds:02d}") # 2:46:07วิธีที่ 4: จัดการตัวเลขติดลบอย่างถูกต้อง
ขั้นตอนที่ 1:ตรวจสอบวิธีการ//รอบด้วยเนกาทีฟ (มันมักจะลงไปสู่อินฟินิตี้เชิงลบ)
print(-5 / 2) # -2.5
print(-5 // 2) # -3 (floors down)ขั้นตอนที่ 2:ใช้int(x / y)หรือmath.trunc(x / y)หากคุณต้องการการตัดทอนไปยังศูนย์แทนที่จะเป็นพื้น
import math
print(int(-5 / 2)) # -2 (truncates toward zero)
print(math.trunc(-5/2))# -2ขั้นตอนที่ 3:ชอบมากกว่า//เมื่อต้องการพฤติกรรมพื้นสำหรับผลลัพธ์เชิงลบ
def pages_needed(total, per_page):
# Floors down even for negatives; safe for totals ≥ 0
return (total + per_page - 1) // per_pageวิธีที่ 5: อัปเดตค่าในสถานที่ด้วย // =
ขั้นตอนที่ 1:ใช้//=เพื่อแบ่งพื้นและกำหนดกลับไปที่ตัวแปรเดียวกัน
x = 23
x //= 4
print(x) # 5ขั้นตอนที่ 2:โปรดจำไว้ว่าการผสมกับลอยกลับมาลอย
y = 23
y //= 4.0
print(y, type(y)) # 5.0 <class 'float'>ขั้นตอนที่ 3:ยืนยันว่าผู้ประกอบการแสดงความตั้งใจอย่างชัดเจนเมื่อไม่จำเป็นต้องใช้ส่วนที่เหลือ
batch = 137
batch //= 10 # number of full tens
print(batch) # 13เคล็ดลับด่วน:
//พื้น;/ส่งคืนความฉลาดทางที่แน่นอนเป็นลอย- ด้วยตัวถูกดำเนินการลอย
//ส่งคืนลอยตัว (แต่ยังคงชั้นผลลัพธ์ตัวเลข) - ใช้
divmod(a, b)เมื่อคุณต้องการทั้งความฉลาดและส่วนที่เหลือ - สำหรับค่าลบให้ชัดเจนว่าคุณต้องการพื้น (
//) หรือการตัดทอน (int()-math.trunc()-
นั่นคือส่วนสำคัญ: เอื้อมมือไป//เมื่อคุณต้องการความฉลาดที่ปัดเศษลงและเก็บไว้divmodในชุดเครื่องมือของคุณเมื่อคุณต้องการส่วนที่เหลือ












