どちらか一方を使用する利点はありますか? Python 2 では、どちらも同じ結果を返すようです。
>>> 6/3
2
>>> 6//3
2
どちらか一方を使用する利点はありますか? Python 2 では、どちらも同じ結果を返すようです。
>>> 6/3
2
>>> 6//3
2
Python 3.x では、5 / 2
が返さ2.5
れ、5 // 2
が返され2
ます。前者は浮動小数点除算、後者は整数除算とも呼ばれる床除算です。
from __future__ import division
2.x 行の Python 2.2 以降では、Python 2.x が 3.x の動作を採用する原因となるを実行しない限り、整数に違いはありません。
将来のインポートに関係なく、それが操作のフロア分割結果であるため、5.0 // 2
返されます。2.0
PEP 238: 除算演算子の変更で詳細な説明を見つけることができます。
Python 2.x ラインを明確にするために、/
フロア分割でも真の分割でもありません。
/
は、両方の引数がの場合はフロア除算ですが、いずれかの引数が のint
場合は真の除算です。float
//
あなたのタイプに関係なく、「フロア分割」を実装します。だから
、両方を与えますが1.0/2.0
、とを与えます。0.5
1/2
1//2
1.0//2.0
0
詳細はPEP 238: 除算演算子の変更を参照してください。
/ → 浮動小数点除算
// → フロア分割
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 と同じ出力が必要な場合は、次のようにします。
パイソン 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
皆さんも回答されている通り、//
フロア分割です。
なぜこれが重要なのかというと//
、Python 3.x バージョンを含む 2.2 以降のすべての Python バージョンで、明確に階層分割されているからです。
の動作は、次の/
条件によって異なります。
__future__
インポートかどうか (モジュールローカル)-Q old
または-Q new
>>> print 5.0 / 2
2.5
>>> print 5.0 // 2
2.0
//
フロア分割です。結果の整数フロアが常に得られます。もう 1 つは「通常の」分割です。
二重スラッシュ ( //
) はフロア分割です。
>>> 7//3
2
方程式の答えは、小数点として .0 を使用して、次に小さい整数または浮動小数に丸められます。
>>>print 5//2
2
>>> print 5.0//2
2.0
>>>print 5//2.0
2.0
>>>print 5.0//2.0
2.0