回答:
Python 3.xでは、5 / 2
が返され2.5
、5 // 2
が返され2
ます。前者は浮動小数点除算であり、後者はフロア除算であり、整数除算とも呼ばれます。
Python 2.2以降の2.x行では、from __future__ import division
Python 2.xが3.xの動作を採用する原因となるを実行しない限り、整数の違いはありません。
将来のインポートに関係なく、操作の床分割結果なので5.0 // 2
返却2.0
します。
詳細な説明はhttps://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operatorにあります。
python -Qnew
。他の分割オプション:-Qold
(デフォルト)、 -Qwarn
、-Qwarnall
5.0 / 2
戻ることを指摘する価値があります。古い動作は、両方のオペランドが異なる場合にのみ異なります。2.5
5 / 2.0
int
//
タイプに関係なく、「フロアディビジョン」を実装します。そう
1.0/2.0
与える0.5
が、両方1/2
、1//2
そして1.0//2.0
与えるでしょう0
。
詳細については、https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operatorを参照してください
math.floor()
またはmath.fmod()
、単項演算子で何が起こっているのかわからない場合は、
/
および//
2項演算子(2つのオペランド、左と右、分子と分母)
/ ->浮動小数点除算
// ->フロアディビジョン
Python 2.7とPython 3.5の両方の例をいくつか見てみましょう。
Python 2.7.10とPython 3.5
print (2/3) ----> 0 Python 2.7
print (2/3) ----> 0.6666666666666666 Python 3.5
Python 2.7.10とPython 3.5
print (4/2) ----> 2 Python 2.7
print (4/2) ----> 2.0 Python 3.5
(python 2.7で)python 3.5と同じ出力が必要な場合は、次のようにします。
Python 2.7.10
from __future__ import division
print (2/3) ----> 0.6666666666666666 #Python 2.7
print (4/2) ----> 2.0 #Python 2.7
Python 2.7と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 ; しかし、フロア関数の丸め方向のため、次のものは前のものと比較すると直観に反するように見えるかもしれません:-100 // -33
=> 3。
誰もがすでに答えたように、//
床の分割です。
これが重要なのは、//
Python 3.xバージョンを含む2.2からのすべてのPythonバージョンで、それが明白なフロア分割であることです。
の動作は以下に/
応じて変化します。
__future__
インポートかどうか(モジュールローカル)-Q old
または-Q new
Python 2.7およびその他の次期バージョンのpython:
/
)左側のオペランドを右側のオペランドで除算します
例: 4 / 2 = 2
//
)オペランドの除算。結果は、小数点以下の桁が除かれた商になります。しかし、オペランドの1つが負の場合、結果はフロアされます。つまり、ゼロから離れて(負の無限大に向かって)丸められます。
例:9//2 = 4
と9.0//2.0 = 4.0
、-11//3 = -4
、-11.0//3 = -4.0
/
ディビジョンと//
フロアディビジョンのオペレーターはどちらも同じように操作します。
5.0//2
結果は2.0
になります。演算子からの戻り値の戻り値の型がpython強制(型キャスト)規則に従う2
ためではありません。//
Pythonは、データ損失を回避するために、低いデータ型(整数)から高いデータ型(浮動小数点)への変換を促進します。
//
床の分割です。常に結果の床の値を提供します。/
は浮動小数点除算です。以下は違います/
と//
; 私はこれらの算術演算を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
//
。