分页: 1 / 1

python除法/和//的疑惑。

发表于 : 2011-02-10 19:33
百草谷居士
在python核心编程中提到:/是整除,而//是浮点除法。
可是我却得到这样的结果:
>>> 17/4
4
>>> 17//4
4
>>> (17/4)==(17//4)
True
>>>
而不是我想象的17//4=4.25;(17/4)==(17//4)为假。
为什么,难道这个规则在python2.6中改变了?

Re: python除法/和//的疑惑。

发表于 : 2011-02-10 20:41
HuntXu

代码: 全选

>>> 17/4
4
>>> 17//4
4
>>> 17.0/4
4.25
>>> 17.0//4
4.0
明白?

Re: python除法/和//的疑惑。

发表于 : 2011-02-11 11:54
百草谷居士
如此说来是 :
/在被除数是整数的情况下整除,被除数为浮点数时为浮点除法;
//无论被除数是整数或者浮点数总是采取甩尾法取整。

是书写错了,还是翻译搞错了 :em20

Re: python除法/和//的疑惑。

发表于 : 2011-03-02 16:12
realfiona
你要看你的书针对的哪个版本的python

Re: python除法/和//的疑惑。

发表于 : 2011-03-05 22:15
only_one
py3 中 /是浮点除法

// 是向负数端取整

Re: python除法/和//的疑惑。

发表于 : 2011-03-05 22:49
lubcat
版本关系么..
小概念没弄明白.了解下

Re: python除法/和//的疑惑。

发表于 : 2011-03-06 7:28
百草谷居士
和版本没有关系。
只是译者的汉语水平有限,那段描述实在是语无伦次,不知所云。
计算机专业人员学这语言,学那语言,为啥不知道把自己的母语学好?这是与人交流的基础,展示自己才能的基础。

Re: python除法/和//的疑惑。

发表于 : 2011-03-07 9:46
realfiona
嗯,查了下文档,我自己的理解,不对的请指出。

Python 2.7:

python-2.7.1-docs-html/reference/expressions.html#binary-arithmetic-operations:
The / (division) and // (floor division) operators yield the quotient of their arguments.
在2.7中,/是整数除法,//是做floor division,也就是和floor()函数一样。
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1/2
0
>>> 1//2
0
>>> -1/2
-1
>>> -1//2
-1
可见,/和//的结果还是一样的?(整数的时候)

而在python 3.0中,/默认是浮点数除法。//就成了类似整数除法的代替了?python3的浮点除法,可以在2.7中通过__future__模块获得。
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import division
>>> 1/2
0.5
>>> 1//2
0
>>> -1/2
-0.5
>>> -1//2
-1