首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2.7.4上的Python的/和//运算符

2.7.4上的Python的/和//运算符
EN

Stack Overflow用户
提问于 2013-06-14 01:40:29
回答 4查看 13.7K关注 0票数 4

我是Python的新手,我开始学习基础知识。我是一个C++用户,所以//操作符是新的东西。根据我正在读的一本书:

代码语言:javascript
复制
>> 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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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

例如:

代码语言:javascript
复制
>>> 4/3
1
>>> 4//3
1
>>> from __future__ import division
>>> 4/3
1.3333333333333333
>>> 4//3
1
票数 7
EN

Stack Overflow用户

发布于 2013-06-14 01:45:45

在使用Python 3.x的情况下,会出现差异。在Python3.0中,7 / 2将返回3.57 // 2将返回3。运算符/floating point division,运算符//floor divisioninteger division

但是在Python 2.x的情况下不会有任何区别,并且文本是错误的,我相信,这是我得到的输出。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 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、42尚未定义为floats

希望它能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17093584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档