我是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]
答案 0 :(得分:6)
在Python 2.x中,默认的除法运算符是“Classic dvision”。这意味着/
与整数运算符一起使用时将导致类似于C的整数除法[即4/3 = 1
]。
在Python 3.x中,这已经改变了。在那里,/
指的是“真正的划分”[4/3 = 1.3333..
],而//
则用于请求“经典/地板划分”。
如果要在Python 2.7中启用“True division”,可以在代码中使用from __future__ import division
。
来源:PEP 238
例如:
>>> 4/3
1
>>> 4//3
1
>>> from __future__ import division
>>> 4/3
1.3333333333333333
>>> 4//3
1
答案 1 :(得分:2)
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
>>>
答案 2 :(得分:0)
//
似乎工作正常,
请在运营商上查看此tutorial。
// = Floor Division - 结果为的操作数的划分 删除小数点后的数字的商。 9 // 2等于4,9.0 // 2.0等于4.0
要4/2
等于2.0
,您需要指定一个浮点数。例如:4/float(2)
评估为2.0
。除法时,整数4
和2
尚未定义为floats
。
希望它有所帮助!
答案 3 :(得分:0)
在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 ++中如果你想要一个整数除法你使用//,如果你想要浮动除法你使用/.
请参阅this了解python版本之间的差异。