代码
的eval(" 7/2&#34)
产生结果3
。我希望它返回3.5
。我怎么能实现这个目标呢?
更新:我现在意识到eval()是一个红色的鲱鱼'这是How can I force division to be floating point? Division keeps rounding down to 0的副本,可能还有大约一百个问题。
答案 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.0
或7.0/2
;或从未来的实施包导入部门功能:
In[1]: from __future__ import division
然后像你一样做分裂:
In[2]: 7/2
Out[2]: 3.5