2015-12-11 17 views
15

Tôi mới sử dụng Python, và giờ đây tôi đang học toán. tôi hiểu rằng:Phân tách số nguyên trong Python 3 - kết quả lạ với số âm

  • Nhà điều hành / được sử dụng cho floating point division
  • // cho integer division.

Ví dụ:

7//3 = 2 

7//-3=-3. Tại sao câu trả lời là -3?

Tôi bị kẹt ở đây.

+1

Xem thêm [Tại sao sàn phân chia số nguyên của Python] (http://python-history.blogspot.com.by/2010/08/why-pythons-integer-division-floors.html) –

Trả lời

26

// không phải là nguyên chia, nhưng sàn bộ phận:

7/-3 -> -2.33333... 
7//-3 -> floor(7/-3) -> floor(-2.33333...) -> -3 

PEP 238 trên Thay đổi bộ phận điều hành:

Nhà điều hành // sẽ có mặt để yêu cầu sàn phân chia một cách rõ ràng.

Xem thêm Why Python's Integer Division Floors (nhờ @eugene y) - Về cơ bản 7//-3-7//3, do đó bạn muốn để có thể viết:

-7 = 3 * q + r 

Với q một số nguyên (tiêu cực, tích cực hay nul) và r một số nguyên như vậy mà 0 <= r < 3. Điều này chỉ hoạt động nếu q = -3:

-7 = 3 * (-3) + 2 
8

// là các nhà điều hành cho bộ phận sàn.

Điều này có nghĩa rằng sau khi bộ phận được hoàn thành "sàn" chức năng được áp dụng (giá trị lấy từ các bộ phận được làm tròn xuống số nguyên gần nhất bất liệu phần thập phân là lớn hơn hoặc ít hơn .5)

Ví dụ, hãy lưu ý rằng đối với câu trả lời phủ định, toán tử chia tầng sẽ vẫn làm tròn xuống (ví dụ: -5/2 -> -2,5 -> -3).

Các vấn đề liên quan