Python - 如何使用eval()返回双精度值
抱歉,如果这个问题已经被问过,我找不到相关的信息。
我刚开始学习Python,正在用Tkinter做一个计算器。在输入的算式计算时,只有在算式中使用小数时,结果才会返回小数。例如,如果你输入3/2,它会返回1。有没有什么方法可以让结果返回小数,而不是为每种问题类型自己写一个方法呢?
代码:
def enter(self):
answer = self.text.get(0.0, END)
answer = eval(answer)
self.text.delete(0.0, END)
self.text.insert(END, answer)
2 个回答
0
在Python 2中,如果你想让整数相除时得到小数结果,可以在代码的最开始加上
from __future__ import division
这段代码。需要注意的是,这个设置会影响整个文件,而不仅仅是eval
这一部分。
0
在python2中,你可以选择导入 __future__
,或者先把数字转换成浮点数。
导入 __future__
的方法如下:
>>> from __future__ import division
>>> eval('3/2')
1.5
>>>
或者在数字后面加一个 0
:
>>> eval('3.0/2.0')
1.5
>>>
不过,from __future__ import division
这个操作只在python2中需要,因为在默认情况下,未来版本的python会自动这样处理。
当你导入 __future__
后,所有你进行的计算中,除法的规则都会适用。
>>> from __future__ import division
>>> 3/2
1.5
>>> 10/9
1.1111111111111112
>>> 1/3
0.3333333333333333
>>> 7/8
0.875
>>> 7/9
0.7777777777777778
>>>