0

编码

评估(“7/2”)

产生结果3。我宁愿它返回3.5。请问我怎样才能做到这一点?

更新:我现在意识到 eval() 是一个“红鲱鱼”,这是我如何强制除法为浮点的副本?除法不断四舍五入到 0,可能还有大约一百个其他问题。

4

4 回答 4

2

在 Python 2 中,两个整数相除的结果是一个整数:

In [1]: 7/2
Out[1]: 3

如果引入浮点数,则结果为浮点数:

In [2]: 7/2.0
Out[2]: 3.5

在 Python 3 中,整数除法产生浮点数,参见PEP 238

您可以像这样在 Python 2 中实现相同的行为:

In [3]: from __future__ import division

In [4]: 7/2
Out[4]: 3.5

并执行整数除法:

In [5]: 7//2
Out[5]: 3
于 2013-09-28T00:23:00.673 回答
1

Python 是动态类型的,您通过省略小数隐式传递整数。

只需使用 7.0/2 或 7/2.0。

这会让 python 知道你正在使用浮点数。

于 2013-09-28T00:24:39.467 回答
1

Python 2.7 根据输入变量的类型进行划分。要获得所需的结果,您可以:

  • 将其中一个变量“转换”为浮点数7/2.07.0/2; 或者
  • 从未来的实现包中导入除法功能:

    In[1]: from __future__ import division

然后像你一样做除法:

In[2]: 7/2
Out[2]: 3.5
于 2013-09-28T00:28:35.863 回答
0
python -c 'print eval("float(7)/float(2)")'
于 2013-09-28T00:25:45.260 回答