我是 Python 新手,我开始学习基础知识。我是 C++ 人,所以 // 运算符是新事物。根据我正在阅读的一本书:
>> 4/2
2.0
>> 2/4
0.5
>> 5//4
2
>> 2//4
0
问题是当我写5//4
结果是 1 时,当我写4/2
结果是 2 而不是 2.0 时,当我写2/4
结果是 0 。我必须写“2.0/4.0”才能得到 0.5 作为结果。这些作者的错误还是我做错了什么?
我在 linux2 上使用 Python 2.7.4,[GCC 4.7.3]
在 Python 2.x 中,默认的除法运算符是“经典除法”。这意味着/
,当与整数运算符一起使用时,将导致类似于 C++ 或 java [ie 4/3 = 1
] 的整数除法。
在 Python 3.x 中,这发生了变化。那里,/
指的是“真正的划分”[ 4/3 = 1.3333..
],而//
用于请求“经典/楼层划分”。
如果你想在 Python 2.7 中启用“真除法”,你可以from __future__ import division
在你的代码中使用。
资料来源:PEP 238
例如:
>>> 4/3
1
>>> 4//3
1
>>> from __future__ import division
>>> 4/3
1.3333333333333333
>>> 4//3
1
差异发生在 的情况下Python 3.x
。在 Python 3.0 中,7 / 2
将返回3.5并将7 // 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
>>>
//
似乎工作正常,
请参阅有关运算符的本教程。
// = Floor Division - 操作数的除法,结果是除去小数点后的数字的商。9//2 等于 4 和 9.0//2.0 等于 4.0
对于4/2
等于2.0
,您需要指定一个浮点数。例如:4/float(2)
计算为2.0
。整数4
和2
尚未定义为floats
除法时。
希望能帮助到你!
在 python 2.7 和之前的版本中,除非有浮点数,否则 总是有整数除法。/ 和 // 在 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 版本之间的差异,请参阅此内容。