我是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上使用的是Python2.7.4,GCC 4.7.3
发布于 2013-06-14 01:57:29
在Python 2.x中,默认的除法运算符是"Classic division“。这意味着当与整数运算符一起使用时,/将导致类似于C++或java的整数除法,即4/3 = 1。
在Python 3.x中,这一点已更改。其中,/指的是“真正的划分”4/3 = 1.3333..,而//则用于请求“经典/楼层划分”。
如果你想在Python2.7中启用“真除”,你可以在你的代码中使用from __future__ import division。
来源:PEP 238
例如:
>>> 4/3
1
>>> 4//3
1
>>> from __future__ import division
>>> 4/3
1.3333333333333333
>>> 4//3
1发布于 2013-06-14 01:45:45
在使用Python 3.x的情况下,会出现差异。在Python3.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
>>> 发布于 2013-06-14 01:47:00
//似乎工作正常,
有关运算符,请参阅此tutorial。
// =底除法-操作数的除法,其结果是删除小数点后的数字的商。9//2等于4,9.0//2.0等于4.0
要使4/2等于2.0,您需要指定一个浮点数。例如:4/float(2)的计算结果为2.0。在除法时,int、4和2尚未定义为floats。
希望它能帮上忙!
https://stackoverflow.com/questions/17093584
复制相似问题