Python - 如何使用eval()返回双精度值

0 投票
2 回答
1916 浏览
提问于 2025-04-18 06:49

抱歉,如果这个问题已经被问过,我找不到相关的信息。

我刚开始学习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
>>> 

撰写回答