Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2/2
1.0
这是打算吗?我强烈记得返回int/int=int
的早期版本?我该怎么办,是否有新的分区运算符或者我必须总是进行演员?
答案 0 :(得分:243)
查看PEP-238:更改分部操作员
//运营商可以明确地请求楼层划分。
答案 1 :(得分:51)
糟糕,立即找到2//2
。
答案 2 :(得分:33)
希望它可以立即帮助某人。
在Python 2.7中:默认情况下,除法运算符将返回整数输出。
将结果设为双倍多重1.0 至"红利或除数"
100/35 => 2 #(Expected is 2.857142857142857)
(100*1.0)/35 => 2.857142857142857
100/(35*1.0) => 2.857142857142857
在Python 3中
// => used for integer output
/ => used for double output
100/35 => 2.857142857142857
100//35 => 2
100.//35 => 2.0 # floating-point result if divsor or dividend real
答案 3 :(得分:19)
已接受的答案已提及PEP 238。我只是想在没有阅读整个PEP的情况下为那些对正在发生的事情感兴趣的人添加一个快速的视角。
Python将+
,-
,*
和/
等运算符映射到特殊函数,例如a + b
相当于
a.__add__(b)
关于Python 2中的除法,默认情况下只有/
映射到__div__
,结果取决于输入类型(例如int
,float
)
Python 2.2引入了__future__
特性division
,它以下列方式改变了除法语义(TL; PEP 238的DR):
/
映射到__truediv__
,必须“返回合理的近似值
分裂的数学结果“(引自PEP 238)//
映射到__floordiv__
,它应返回/
使用Python 3.0,PEP 238的更改成为默认行为,Python的对象模型中没有更多特殊方法__div__
。
如果要在Python 2和Python 3中使用相同的代码,请使用
from __future__ import division
并坚持使用/
和//
的PEP 238语义。
答案 4 :(得分:0)
根据Python3文档,python除以整数后,即使预期为整数也会产生浮点数。
要专门打印整数,请使用floor division method
。
楼层除法将四舍五入并除去小数点。 Represented by //
因此,使用2//2
而不是2/2
您也可以从__future__
导入除法,无论使用python2还是python3。
希望有帮助!