4

私はPythonが初めてで、基本の勉強を始めました。私は C++ 派なので、 // 演算子は新しいものでした。私が読んでいる本によると:

>> 4/2
2.0
>> 2/4
0.5
>> 5//4
2
>> 2//4
0

問題は5//4、結果を書き込むと 1 、結果を書き込む4/2と 2.0 ではなく 2 になり、2/4結果を書き込むと 0 になることです。結果として 0.5 を得るには、「2.0/4.0」と書かなければなりません。これらの作者の間違いですか、それとも私が何か間違ったことをしていますか?

Linux2でPython 2.7.4、[GCC 4.7.3]を使用しています

4

4 に答える 4

2

の場合差が生じますPython 3.x。Python 3.0 では、7 / 23.57 // 2返し、 3を返します。演算子/floating point divisionで、演算子//floor divisionまたはinteger divisionです。

しかし、Python 2.x違いがなく、テキストが間違っている場合、ここに私が得ている出力があります。

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on 
win32 
Type "copyright", "credits" or "license()" for more information.
>>> 4/2
2
>>> 2/4
0
>>> 5//4
1
>>> 2//4
0
>>> 
于 2013-06-13T17:45:44.863 に答える
0

Python 2.7 以前では、float がない限り 常に整数除算が行われます。/ と // は両方とも、Python 2.7 以前では整数除算です。

>>>4/3
1
>>>4//3
1
>>>4/2.0
2.0
>>> 4//1.5
2.0

Python 3.2 以降 では、/ は浮動小数点除算用、// 整数除算用です。

>>>4/2
2
>>>4/2.0
2.0
>>>3/2
1.5

したがって、Python 2.7 では、正確な浮動小数点数を返したい場合、除数または除算器は浮動小数点数でなければなりません。 // 最後に .0 を持つ整数を取得します。

Python 3.2++ では、整数除算が必要な場合は // を使用し、浮動小数点除算が必要な場合は / を使用します。

Python のバージョン間の違いについては、こちらを参照してください。

于 2013-06-13T18:03:43.330 に答える