web-dev-qa-db-ja.com

Python 2.7での分割。および3.3

2つの数値をPython 2.7で除算し、小数で結果を取得するにはどうすればよいですか?

なぜ違いがあるのか​​わかりません:

Python 3:

>>> 20/15
1.3333333333333333

Python 2:

>>> 20/15
1

これは実際にはモジュロではありませんか?

60
Erzsebet

python 2.7では、入力が整数の場合、/演算子は整数除算です。

フロート除算(これは私が常に好むものです)が必要な場合は、次の特別なインポートを使用してください。

from __future__ import division

こちらをご覧ください:

>>> 7 / 2
3
>>> from __future__ import division
>>> 7 / 2
3.5
>>>

整数除算は//を使用して達成され、モジュロは%を使用して達成されます

>>> 7 % 2
1
>>> 7 // 2
3
>>>

編集

user2357112がコメントしているように、このインポートは他の通常のインポートの前に行う必要があります。

99
bgusach

Python 3では、/はfloat除算です

Python 2では、/は整数除算です(int入力を想定)

2 and 3の両方で、//は整数除算です

(Python 2で浮動小数点除算を取得するには、20.またはfloat(20)のいずれかのオペランドが浮動小数点である必要があります)

40
mhlester

Python 2.xでは、floatに部門のオペランドが少なくとも1つあることを確認してください。次の例のように、これを実現する複数の方法:

20. / 15
20 / float(15)
14
woozyking

「/」はpython 2の整数除算であるため、整数に丸められます。小数を返したい場合は、入力の1つのタイプをfloatに変更するだけです。

float(20)/15 #1.33333333

9
Bryan