Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Pembahagian Integer dalam Python 2 Memberi Keputusan Tidak Dijangka dengan Nombor Negatif?

Mengapa Pembahagian Integer dalam Python 2 Memberi Keputusan Tidak Dijangka dengan Nombor Negatif?

Linda Hamilton
Linda Hamiltonasal
2024-10-25 02:50:30273semak imbas

Why Does Integer Division in Python 2 Give Unexpected Results with Negative Numbers?

Hasil Tidak Dijangka Pembahagian Integer

Dalam Python 2, melakukan pembahagian integer dengan nombor negatif boleh menghasilkan keputusan yang mengejutkan. Sebagai contoh, apabila membahagikan 8 dengan -7, hasilnya ialah -2, walaupun hasil bahagi yang dijangkakan adalah sekitar -1.143.

Memahami Pembahagian Lantai

Bahagian integer, selalunya dirujuk sebagai "pembahagian lantai" dalam Python 2, membundarkan hasil ke bawah ke arah integer terdekat. Tingkah laku ini menentukan bahawa walaupun apabila membahagikan integer positif dan negatif, output sentiasa lebih negatif.

Conundrums Contoh

Prinsip pembulatan ke bawah ini membawa kepada keputusan yang membingungkan, seperti yang digambarkan dengan operasi pembahagian berikut:

  • 8/(-7) = -2
  • 8/7 = 1

Pembetulan Python 3 Anomali

Dalam Python 3, isu ini telah diselesaikan. Untuk operasi yang sama, 8/(-7), keluaran ialah -1.143. Walau bagaimanapun, jika tingkah laku yang diingini ialah pembahagian integer, menggunakan operator "//" akan meniru hasil daripada Python 2.

Penjelasan Teknikal

Dalam Python 2, jenis integer dibahagikan dengan integer lain juga merupakan integer. Oleh itu, keputusan dibundarkan ke bawah kepada integer terdekat. Python 3 memperkenalkan penukaran jenis automatik, yang membolehkan hasilnya diwakili sebagai nombor titik terapung, mengekalkan nilai sebenarnya.

Atas ialah kandungan terperinci Mengapa Pembahagian Integer dalam Python 2 Memberi Keputusan Tidak Dijangka dengan Nombor Negatif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn