在Python 2.7中划分.和3.3

Erz*_*bet 62 python division python-2.7 python-3.3

如何在Python 2.7中分割两个数字并获得带小数的结果?

我不明白为什么有区别:

在Python 3中:

>>> 20/15
1.3333333333333333
Run Code Online (Sandbox Code Playgroud)

在Python 2中:

>>> 20/15
1
Run Code Online (Sandbox Code Playgroud)

这不是一个模数吗?

bgu*_*ach 103

在python 2.7中,/如果输入是整数,则运算符是整数除法.

如果你想要浮点除法(我总是喜欢它),只需使用这个特殊的导入:

from __future__ import division
Run Code Online (Sandbox Code Playgroud)

在这里看到:

>>> 7 / 2
3
>>> from __future__ import division
>>> 7 / 2
3.5
>>>
Run Code Online (Sandbox Code Playgroud)

整数除法是通过使用//和模数来实现的%

>>> 7 % 2
1
>>> 7 // 2
3
>>>
Run Code Online (Sandbox Code Playgroud)

编辑

如上所述user2357112,此导入必须在任何其他正常导入之前完成.

  • 值得注意的是,未来的语句必须出现在模块中的任何其他代码之前,特别是在非未来的导入之前.另外,`import __future__`不起作用. (3认同)
  • 嗯,这在某种程度上是主观的,但对我来说,来自其他语言,除以 3/2==1 令人困惑。很多人可能会同意,因为浮点除法是python 3中的默认值 (2认同)

mhl*_*ter 42

在Python 3中,/是浮动除法

在Python 2中,/是整数除法(假设int输入)

在2 3中,//是整数除法

(要在Python 2中获得浮点除法,要求其中一个操作数为浮点数,或者为20.或者float(20))


woo*_*ing 14

在Python 2.x中,确保至少有一个分区的操作数float.您可以通过以下示例实现此目的的多种方式:

20. / 15
20 / float(15)
Run Code Online (Sandbox Code Playgroud)


Bry*_*yan 9

"/"是python 2中的整数除法,因此它将舍入为整数.如果要返回小数,只需将其中一个输入的类型更改为float:

float(20)/15 #1.33333333