python除法/和//的疑惑。

软件和网站开发以及相关技术探讨
回复
头像
百草谷居士
帖子: 3910
注册时间: 2006-02-10 16:36
系统: Mint21.1/Deepin20.8

python除法/和//的疑惑。

#1

帖子 百草谷居士 » 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中改变了?
debian 12 / 深度系统 20.9 / Mint 21.3

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

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

#2

帖子 HuntXu » 2011-02-10 20:41

代码: 全选

>>> 17/4
4
>>> 17//4
4
>>> 17.0/4
4.25
>>> 17.0//4
4.0
明白?
HUNT Unfortunately No Talent...
头像
百草谷居士
帖子: 3910
注册时间: 2006-02-10 16:36
系统: Mint21.1/Deepin20.8

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

#3

帖子 百草谷居士 » 2011-02-11 11:54

如此说来是 :
/在被除数是整数的情况下整除,被除数为浮点数时为浮点除法;
//无论被除数是整数或者浮点数总是采取甩尾法取整。

是书写错了,还是翻译搞错了 :em20
debian 12 / 深度系统 20.9 / Mint 21.3

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
头像
realfiona
帖子: 137
注册时间: 2007-11-20 10:58
来自: Hangzhou, China
联系:

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

#4

帖子 realfiona » 2011-03-02 16:12

你要看你的书针对的哪个版本的python
only_one
帖子: 186
注册时间: 2010-05-25 16:49

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

#5

帖子 only_one » 2011-03-05 22:15

py3 中 /是浮点除法

// 是向负数端取整
lubcat
帖子: 2061
注册时间: 2010-09-27 12:59

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

#6

帖子 lubcat » 2011-03-05 22:49

版本关系么..
小概念没弄明白.了解下
生活里,有很多转瞬即逝,像在车站的告别,刚刚还相互拥抱,转眼已各自天涯。很多时候,你不懂,我也不懂,就这样,说着说着就变了,听着听着就倦了,看着看着就厌了,跟着跟着就慢了,走着走着就散了,爱着爱着就淡了,想着想着就算了。
头像
百草谷居士
帖子: 3910
注册时间: 2006-02-10 16:36
系统: Mint21.1/Deepin20.8

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

#7

帖子 百草谷居士 » 2011-03-06 7:28

和版本没有关系。
只是译者的汉语水平有限,那段描述实在是语无伦次,不知所云。
计算机专业人员学这语言,学那语言,为啥不知道把自己的母语学好?这是与人交流的基础,展示自己才能的基础。
debian 12 / 深度系统 20.9 / Mint 21.3

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
头像
realfiona
帖子: 137
注册时间: 2007-11-20 10:58
来自: Hangzhou, China
联系:

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

#8

帖子 realfiona » 2011-03-07 9:46

嗯,查了下文档,我自己的理解,不对的请指出。

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
回复