Jon*_*röm 211 python integer division python-3.x
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
Run Code Online (Sandbox Code Playgroud)
这是有意的吗?我强烈记得早期版本的回归int/int=int
?我应该怎么做,是否有新的分区运算符或者我必须总是演员?
Bra*_*lor 268
请看PEP-238:更改分部操作员
//运营商可以明确地请求楼层划分.
Jon*_*röm 54
哎呀,马上找到了2//2
.
小智 41
希望它可以立即帮助某人.
在Python 2.7中:默认情况下,除法运算符将返回整数输出.
将结果以双倍倍数1.0获得"除数或除数"
100/35 => 2 #(Expected is 2.857142857142857)
(100*1.0)/35 => 2.857142857142857
100/(35*1.0) => 2.857142857142857
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
cod*_*kel 21
已接受的答案已经提到了PEP 238.我只是想为那些对正在发生的事情感兴趣而不阅读整个PEP的人们添加一个快速的视角.
Python的地图运营商如+
,-
,*
和/
特殊的功能,使得例如a + b
相当于
a.__add__(b)
Run Code Online (Sandbox Code Playgroud)
关于在Python 2分割,存在通过仅仅默认/
映射到__div__
,其结果是依赖于输入类型(例如int
,float
).
Python 2.2引入了该__future__
功能division
,它以下列方式改变了划分语义(TL; PEP 238的DR):
/
__truediv__
必须"返回划分数学结果的合理近似值"的地图(引自PEP 238)//
映射到__floordiv__
,应返回地板的结果/
使用Python 3.0,PEP 238的更改成为默认行为__div__
,Python的对象模型中没有更多特殊方法.
如果你想在Python 2和Python 3中使用相同的代码
from __future__ import division
Run Code Online (Sandbox Code Playgroud)
并坚持PEP 238的语义/
和//
.
归档时间: |
|
查看次数: |
152176 次 |
最近记录: |