2

Python 表现出一种我以前没有见过的奇怪行为,不确定我做了什么或发生了什么,但如果我输入简单,基本上它不会在带有小数的 shell 中运行

>>> 2/3
0
>>> 3/2
1

如果我尝试通过 % 或 format() 对其进行格式化,它也没有多大作用,基本上它只是不识别任何小数

>>> a =2/3
>>> a
0
>>> format(a, '.5f')
'0.00000'

我需要一个简单的除法来检查我的代码,突然间我遇到了像这样奇怪的事情

我使用 Python 2.7

4

3 回答 3

9

在 Python 2 中,/默认执行“整数除法”。如果你把

from __future__ import division

在脚本的顶部,它将执行您想要的除法,这将是 Python 3 中的默认行为。或者,如果您想与旧的 Python 版本保持兼容(不推荐用于新代码),请执行

2. / 3.

或者,使用变量

x / float(y)
于 2012-09-07T14:09:41.307 回答
3

a = 2/3。

或者

a = 2./3

至少有一个数字需要是浮点数!

于 2012-09-07T14:08:15.570 回答
2

您只对整数执行操作,这意味着数字的小数部分被删除。您需要类似的东西2.0/3,因此将使用浮点运算。

于 2012-09-07T14:07:53.890 回答