如何在Python 2.7中将两个数相除并得到带小数的结果?

我不明白为什么会有区别:

在Python 3中:

>>> 20/15
1.3333333333333333


在Python 2中:

>>> 20/15
1


这实际上不是模数吗?

评论

这是整数除法,哟! 20 mod 15 == 5

尝试float(20)/ float(15)

或浮动20./15。

#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