Yanıtlar:
Python 3.x ' 5 / 2
de dönecek 2.5
ve 5 // 2
dönecektir 2
. Birincisi kayan nokta bölümüdür ve ikincisi bazen de tamsayı bölümü olarak da adlandırılan taban bölümüdür .
Python 2.2 veya sonraki sürümlerde 2.x satırında, bir işlem yapmazsanız tamsayılar için bir fark yoktur from __future__ import division
, bu da Python 2.x'in 3.x davranışını benimsemesine neden olur.
Gelecekteki ithalattan bağımsız olarak , operasyonun taban bölümü sonucu olduğu için 5.0 // 2
geri dönecektir 2.0
.
Detaylı bir açıklama https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator adresinde bulabilirsiniz.
python -Qnew
. diğer bölme seçenekleri: -Qold
(varsayılan) -Qwarn
,,-Qwarnall
5.0 / 2
geri döndüğünü belirtmeye değer - eski davranış sadece her iki işlenen de farklıdır . 2.5
5 / 2.0
int
Python 2.x hattına açıklık getirmek için /
ne zemin bölümü ne de gerçek bölümüdür. Kabul edilen mevcut cevap bu konuda net değil.
/
zaman taban bölümüdür iki bağımsız değişken olarak int
, ama gerçek bölümüdür ya da her iki args vardır float
.
Yukarıdakiler daha fazla gerçeği anlatır ve kabul edilen cevaptaki 2. paragraftan daha açıktır.
//
türünüzden bağımsız olarak "kat bölümü" uygular. Yani
1.0/2.0
verecektir 0.5
, ancak her iki 1/2
, 1//2
ve 1.0//2.0
verecektir 0
.
Ayrıntılar için bkz. Https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator
math.floor()
ya da kullanmayı düşünün math.fmod()
.
/
ve //
bienal operatörler (iki işlenen, sol ve sağ, pay ve payda)
/ -> Kayan nokta bölümü
// -> Kat bölümü
Hem python 2.7'de hem de Python 3.5'te bazı örnekleri görelim.
Python 2.7.10 ve Python 3.5 Karşılaştırması
print (2/3) ----> 0 Python 2.7
print (2/3) ----> 0.6666666666666666 Python 3.5
Python 2.7.10 ve Python 3.5 Karşılaştırması
print (4/2) ----> 2 Python 2.7
print (4/2) ----> 2.0 Python 3.5
Şimdi (python 2.7'de) python 3.5 ile aynı çıktıya sahip olmak istiyorsanız, aşağıdakileri yapabilirsiniz:
Python 2.7.10
from __future__ import division
print (2/3) ----> 0.6666666666666666 #Python 2.7
print (4/2) ----> 2.0 #Python 2.7
Hem python 2.7 hem de Python 3.5'te Kat bölümü arasında fark olmadığı için
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 ; ancak zemin fonkunun yuvarlanma yönü nedeniyle, bir sonrakine göre bir önceki sezgisel görünebilir: -100 // -33
=> 3 .
Herkesin cevapladığı gibi //
, kat bölümüdür.
Bunun neden önemli olduğu, //
Python 3.x sürümleri de dahil olmak üzere 2.2'nin tüm Python sürümlerinde açıkça kat bölümü olmasıdır.
Davranışı /
aşağıdakilere bağlı olarak değişebilir:
__future__
içe aktarma veya alma (modül yerel)-Q old
veya-Q new
>>> print 5.0 / 2
2.5
>>> print 5.0 // 2
2.0
Python 2.7 ve diğer python sürümleri:
/
)Sol taraftaki işleneni sağ taraftaki işlenene böler
Misal: 4 / 2 = 2
//
)Sonucun, ondalık noktadan sonraki basamakların kaldırıldığı bölüm olduğu işlenenlerin bölümü. Ancak işlenenlerden biri negatifse, sonuç katlanır, yani sıfırdan uzağa (negatif sonsuza doğru) yuvarlanır:
Örnekler: 9//2 = 4
ve 9.0//2.0 = 4.0
, -11//3 = -4
,-11.0//3 = -4.0
Hem /
Bölme hem de //
kat bölme operatörü benzer şekilde çalışmaktadır.
Çift eğik çizgi,, //
zemin bölümüdür:
>>> 7//3
2
//
kat bölümüdür, her zaman sonucun tam sayı katını verecektir. Diğeri 'düzenli' bölümdür.
Yukarıdaki cevaplar iyidir. Başka bir nokta daha eklemek istiyorum. Bazı değerlere kadar her ikisi de aynı bölümle sonuçlanır. Bundan sonra kat bölme operatörü ( //
) iyi çalışır ancak bölme ( /
) operatörü çalışmaz .
- > int(755349677599789174/2)
- > 377674838799894592 #wrong answer
- > 755349677599789174 //2
- > 377674838799894587 #correct answer
5.0//2
ile sonuçlanır 2.0
, ve 2
, çünkü geri dönüş tipi dönüş değeri //
operatör piton zorlama (tip döküm) kuralları takip eder.
Python, veri kaybını önlemek için daha düşük veri türünün (tamsayı) daha yüksek veri türüne (kayan nokta) dönüştürülmesini destekler.
//
kat bölümüdür, her zaman sonucun kat değerini verecektir./
de kayan nokta bölümü.Aşağıdakilerden arasındaki fark olan /
ve //
; Bu aritmetik işlemleri Python 3.7.2'de çalıştırdım
>>> print (11 / 3)
3.6666666666666665
>>> print (11 // 3)
3
>>> print (11.3 / 3)
3.7666666666666667
>>> print (11.3 // 3)
3.0
//
bölümüne bakın.