如何在Python 2.7中将两个数相除并得到带小数的结果?
我不明白为什么会有区别:
在Python 3中:
>>> 20/15
1.3333333333333333
在Python 2中:
>>> 20/15
1
这实际上不是模数吗?
#1 楼
在python 2.7中,如果输入为整数,则/
运算符为整数除法。 > from __future__ import division
在此处查看:
>>> 7 / 2
3
>>> from __future__ import division
>>> 7 / 2
3.5
>>>
使用
//
可实现整数除法,并使用%
可求模/>
>>> 7 % 2
1
>>> 7 // 2
3
>>>
编辑
如
user2357112
所评论,此导入必须在任何其他常规导入之前完成。评论
值得注意的是,将来的语句必须出现在模块中的任何其他代码之前,尤其是在非未来导入之前。另外,导入__future__无效。
– user2357112支持Monica
2014年1月23日19:04
真好推荐使用__future__
– woozyking
2014年1月23日19:08
@dumbledad,它更具可读性,简洁性和直观性
– bgusach
17年1月16日在11:26
有趣-我觉得它不那么直观。如果我知道/是整数除法,并且结果为小数,我会被吃惊,并且from __future__导入除法可能要经过筛选。
– dumbledad
17年1月16日在11:37
好吧,这在某种程度上是主观的,但是对我来说,来自其他语言,划分3/2 == 1令人困惑。许多人可能会同意,因为在Python 3中,float除法是默认设置
– bgusach
17年1月16日在12:08
#2 楼
在Python 3中,/
是浮点除法在Python 2中,
/
是整数除法(假设有int
输入)在2和3中,
//
是整数除法(要在Python 2中进行浮点除法,要求两个操作数中的任何一个都是浮点数,例如
20.
或float(20)
)评论
感谢括号内的内容-这是我很好奇的。
–伊凡X
18年8月4日在17:04
#3 楼
在Python 2.x中,请确保float
中至少有一个除法运算符。您可以通过多种方式实现此目标,例如以下示例:20. / 15
20 / float(15)
#4 楼
“ /”是python 2中的整数除法,因此将四舍五入为整数。如果要返回小数,只需将输入之一的类型更改为float:float(20)/15 #1.33333333
评论
这是整数除法,哟! 20 mod 15 == 5尝试float(20)/ float(15)
或浮动20./15。