Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2/2
1.0
Apakah ini dimaksudkan? Saya sangat ingat versi sebelumnya kembali int/int=int
? Apa yang harus saya lakukan, apakah ada operator divisi baru atau harus saya selalu casting?
python
integer
python-3.x
division
Jonas Byström
sumber
sumber
Jawaban:
Lihatlah PEP-238 : Mengubah Operator Divisi
sumber
/
menjadi cukup dari "kesalahan" desain bahasa yang perlu diperbaiki dengan Python 3. Ini mungkin merupakan keputusan yang kontroversial, tetapi cukup banyak orang merasa itu adalah yang benar. Hitung saya dalam kelompok yang menyukai perubahan. Sangat menyenangkan kita semua bisa setuju untuk tidak setuju. Bersulang. :)Ups, segera ditemukan
2//2
.sumber
Semoga ini bisa membantu seseorang secara instan.
Perilaku Operator Divisi di Python 2.7 dan Python 3
untuk mendapatkan hasil dalam kelipatan ganda 1.0 menjadi "dividen atau pembagi"
sumber
Jawaban yang diterima sudah menyebutkan PEP 238 . Saya hanya ingin menambahkan pandangan cepat ke belakang layar untuk mereka yang tertarik dengan apa yang terjadi tanpa membaca keseluruhan PEP.
Python peta operator seperti
+
,-
,*
dan/
untuk fungsi-fungsi khusus, sehingga misalnyaa + b
setara denganMengenai pembagian di Python 2, secara default hanya ada
/
yang memetakan__div__
dan hasilnya tergantung pada jenis input (misalnyaint
,float
).Python 2.2 memperkenalkan
__future__
fiturdivision
, yang mengubah semantik divisi dengan cara berikut (TL; DR dari PEP 238):/
peta__truediv__
yang harus "mengembalikan perkiraan yang masuk akal dari hasil matematika divisi" (kutipan dari PEP 238)//
peta ke__floordiv__
, yang seharusnya mengembalikan hasil lantai dari/
Dengan Python 3.0, perubahan PEP 238 menjadi perilaku default dan tidak ada metode khusus
__div__
dalam model objek Python.Jika Anda ingin menggunakan kode yang sama dalam Python 2 dan Python 3 gunakan
dan menempel pada semantik PEP 238 dari
/
dan//
.sumber
Menurut dokumentasi Python3, python ketika dibagi dengan integer, akan menghasilkan float meskipun diharapkan menjadi integer.
Untuk mencetak bilangan bulat secara eksklusif, gunakan
floor division method
. Pembagian lantai adalah pembulatan nol dan menghilangkan titik desimal.Represented by //
Karenanya, alih-alih 2/2, gunakan
2//2
Anda juga dapat mengimpor divisi dari
__future__
terlepas dari menggunakan python2 atau python3.Semoga ini bisa membantu!
sumber