使用除以eval的不期望结果

时间:2013-09-28 00:20:45

标签: python-2.7

代码

  

的eval(" 7/2&#34)

产生结果3。我希望它返回3.5。我怎么能实现这个目标呢?

更新:我现在意识到eval()是一个红色的鲱鱼'这是How can I force division to be floating point? Division keeps rounding down to 0的副本,可能还有大约一百个问题。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

Python是动态类型的,你通过不加小数来隐式地传递整数。

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

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

答案 2 :(得分:0)

python -c 'print eval("float(7)/float(2)")'

答案 3 :(得分:0)

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

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

    In[1]: from __future__ import division

然后像你一样做分裂:

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