Jawaban:
Dalam Python 3.x, 5 / 2
akan kembali 2.5
dan 5 // 2
akan kembali 2
. Yang pertama adalah divisi floating point, dan yang terakhir adalah divisi lantai , kadang-kadang juga disebut divisi integer .
Dalam Python 2.2 atau lebih baru di baris 2.x, tidak ada perbedaan untuk bilangan bulat kecuali Anda melakukan from __future__ import division
, yang menyebabkan Python 2.x untuk mengadopsi perilaku 3.x.
Terlepas dari impor di masa depan, 5.0 // 2
akan kembali 2.0
karena itulah hasil pembagian lantai operasi.
Anda dapat menemukan deskripsi terperinci di https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator
python -Qnew
. opsi divisi lainnya: -Qold
(default) -Qwarn
,,-Qwarnall
5.0 / 2
kembali 2.5
di semua versi, seperti halnya 5 / 2.0
- perilaku lama hanya berbeda ketika kedua operan int
.
Untuk memperjelas garis Python 2.x, /
bukan pembagian lantai atau pembagian sejati. Jawaban yang diterima saat ini tidak jelas tentang ini.
/
adalah pembagian lantai ketika kedua args berada int
, tetapi adalah pembagian yang benar ketika salah satu atau kedua argumen tersebut berada float
.
Di atas mengatakan lebih banyak kebenaran, dan lebih jelas daripada paragraf 2 dalam jawaban yang diterima.
//
mengimplementasikan "pembagian lantai", terlepas dari tipe Anda. Jadi
1.0/2.0
akan memberi 0.5
, tetapi keduanya 1/2
, 1//2
dan 1.0//2.0
akan memberi 0
.
Lihat https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator untuk detail
math.floor()
atau math.fmod()
jika Anda tidak yakin apa yang terjadi dengan operator unary.
/
dan //
operator dua arah (dua operan, kiri dan kanan, pembilang dan penyebut)
/ -> Divisi titik mengambang
// -> Divisi lantai
Mari kita lihat beberapa contoh di kedua python 2.7 dan di Python 3.5.
Python 2.7.10 vs Python 3.5
print (2/3) ----> 0 Python 2.7
print (2/3) ----> 0.6666666666666666 Python 3.5
Python 2.7.10 vs Python 3.5
print (4/2) ----> 2 Python 2.7
print (4/2) ----> 2.0 Python 3.5
Sekarang jika Anda ingin memiliki (sama dengan python 2.7) keluaran yang sama seperti pada python 3.5, Anda dapat melakukan hal berikut:
Python 2.7.10
from __future__ import division
print (2/3) ----> 0.6666666666666666 #Python 2.7
print (4/2) ----> 2.0 #Python 2.7
Dimana tidak ada perbedaan antara pembagian Lantai di kedua python 2.7 dan di Python 3.5
138.93//3 ---> 46.0 #Python 2.7
138.93//3 ---> 46.0 #Python 3.5
4//3 ---> 1 #Python 2.7
4//3 ---> 1 #Python 3.5
-100 // 33
=> -4 ; 100 // -33
=> -4 ; tetapi karena arah pembulatan func lantai, yang berikutnya bisa tampak kontra-intuitif jika dibandingkan dengan sebelumnya: -100 // -33
=> 3 .
Seperti yang semua orang sudah jawab, //
adalah pembagian lantai.
Mengapa ini penting adalah bahwa //
pembagian lantai jelas, di semua versi Python dari 2.2, termasuk versi Python 3.x.
Perilaku /
dapat berubah tergantung pada:
__future__
Impor aktif atau tidak (modul-lokal)-Q old
atau-Q new
>>> print 5.0 / 2
2.5
>>> print 5.0 // 2
2.0
Python 2.7 dan versi python yang akan datang:
/
)Membagi operan tangan kiri dengan operan tangan kanan
Contoh: 4 / 2 = 2
//
)Pembagian operan di mana hasilnya adalah hasil bagi di mana digit setelah titik desimal dihapus. Tetapi jika salah satu operan negatif, hasilnya adalah lantai, yaitu dibulatkan dari nol (menuju infinity negatif):
Contoh: 9//2 = 4
dan 9.0//2.0 = 4.0
, -11//3 = -4
,-11.0//3 = -4.0
Kedua /
Divisi dan //
lantai divisi operator yang beroperasi di cara yang sama.
Garis miring ganda //
,, adalah pembagian lantai:
>>> 7//3
2
//
adalah pembagian lantai, itu akan selalu memberi Anda bilangan bulat dari hasilnya. Yang lainnya adalah divisi 'reguler'.
Jawaban di atas bagus. Saya ingin menambahkan poin lain. Hingga beberapa nilai keduanya menghasilkan hasil bagi yang sama. Setelah itu operator divisi lantai ( //
) berfungsi dengan baik tetapi tidak /
operator divisi ( ).
- > int(755349677599789174/2)
- > 377674838799894592 #wrong answer
- > 755349677599789174 //2
- > 377674838799894587 #correct answer
5.0//2
menghasilkan 2.0
, dan bukan 2
karena tipe pengembalian nilai pengembalian dari //
operator mengikuti aturan pemaksaan python (tipe casting).
Python mempromosikan konversi tipe data yang lebih rendah (integer) ke tipe data yang lebih tinggi (float) untuk menghindari kehilangan data.
//
adalah pembagian lantai, itu akan selalu memberi Anda nilai dasar dari hasilnya./
adalah divisi floating-point.Berikut ini adalah perbedaan antara /
dan //
; Saya telah menjalankan operasi aritmatika ini dengan Python 3.7.2
>>> print (11 / 3)
3.6666666666666665
>>> print (11 // 3)
3
>>> print (11.3 / 3)
3.7666666666666667
>>> print (11.3 // 3)
3.0
//
operator untuk melakukan divisi integer.