编码
评估(“7/2”)
产生结果3
。我宁愿它返回3.5
。请问我怎样才能做到这一点?
更新:我现在意识到 eval() 是一个“红鲱鱼”,这是我如何强制除法为浮点的副本?除法不断四舍五入到 0,可能还有大约一百个其他问题。
编码
评估(“7/2”)
产生结果3
。我宁愿它返回3.5
。请问我怎样才能做到这一点?
更新:我现在意识到 eval() 是一个“红鲱鱼”,这是我如何强制除法为浮点的副本?除法不断四舍五入到 0,可能还有大约一百个其他问题。
在 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
Python 是动态类型的,您通过省略小数隐式传递整数。
只需使用 7.0/2 或 7/2.0。
这会让 python 知道你正在使用浮点数。
Python 2.7 根据输入变量的类型进行划分。要获得所需的结果,您可以:
7/2.0
或7.0/2
; 或者从未来的实现包中导入除法功能:
In[1]: from __future__ import division
然后像你一样做除法:
In[2]: 7/2
Out[2]: 3.5
python -c 'print eval("float(7)/float(2)")'