588 Stimmen

Was ist der Unterschied zwischen '/' und '//' bei der Verwendung für die Division?

Gibt es einen Vorteil, den einen gegenüber dem anderen zu verwenden? In Python 2 scheinen sie beide die gleichen Ergebnisse zurückzugeben:

>>> 6/3
2
>>> 6//3
2

3 Stimmen

Bitte schauen Sie sich Das Problem mit der ganzzahligen Division an, um den Grund für die Einführung des // Operators zur Durchführung ganzzahliger Division zu erfahren.

784voto

Eli Courtwright Punkte 174547

In Python 3.x, 5 / 2 wird 2.5 zurückgeben und 5 // 2 wird 2 zurückgeben. Das erste ist Gleitkomma-Division, und das zweite ist Ganzzahldivision, manchmal auch Ganzzahldivision genannt.

In Python 2.2 oder später in der 2.x-Reihe besteht kein Unterschied für Ganzzahlen, es sei denn, Sie führen ein from __future__ import division durch, was dazu führt, dass Python 2.x das Verhalten von 3.x übernimmt.

Unabhängig von dem zukünftigen Import wird 5.0 // 2 2.0 zurückgeben, da dies das Ergebnis der Ganzzahldivision der Operation ist.

Sie können eine detaillierte Beschreibung unter PEP 238: Ändern des Divisionoperators finden.

79voto

Yichun Punkte 1180

Klärung für Python 2.x:

Um es für die Python 2.x-Version klarzustellen, ist / weder Ganzzahldivision noch echte Division.

/ ist Ganzzahldivision, wenn beide Argumente int sind, aber echte Division, wenn entweder der Argumente float ist.

39voto

Kena Punkte 6891

// implementiert die "Floor Division", unabhängig von Ihrem Typ. Daher ergibt 1.0/2.0 0.5, aber sowohl 1/2, 1//2 und 1.0//2.0 ergeben 0.

Siehe PEP 238: Änderung des Division Operators für Details.

37voto

N Randhawa Punkte 7493

/ Gleitkomma-Division

// Abrundungs-Division

Lassen Sie uns einige Beispiele sowohl in Python 2.7 als auch in Python 3.5 sehen.

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

Wenn Sie (in Python 2.7) dasselbe Ergebnis haben möchten wie in Python 3.5, können Sie folgendes tun:

Python 2.7.10

from __future__ import division
print (2/3)  ----> 0.6666666666666666   # Python 2.7
print (4/2)  ----> 2.0                  # Python 2.7

Während es keinen Unterschied in der Abrundungs-Division zwischen Python 2.7 und Python 3.5 gibt.

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

24voto

u0b34a0f6ae Punkte 45029

Wie bereits von allen beantwortet wurde, ist // Ganzzahldivision.

Was daran wichtig ist, ist dass // in allen Python-Versionen ab 2.2, einschließlich Python 3.x-Versionen, eindeutig Ganzzahldivision ist.

Das Verhalten von / kann sich je nach folgenden Faktoren ändern:

  • Aktives __future__-Import oder nicht (modul-lokal)
  • Python-Befehlszeilenoption, entweder -Q old oder -Q new

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X