在Python中如何将一个数字舍入到n个小数位

2024-09-30 05:20:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想,我在输入字段中输入的内容应该自动四舍五入到n个小数点。

import Tkinter as Tk

root = Tk.Tk()

class InterfaceApp():
    def __init__(self,parent):
        self.parent = parent
        root.title("P")
        self.initialize()


    def initialize(self):
        frPic = Tk.Frame(bg='', colormap='new')
        frPic.grid(row=0)
        a= Tk.DoubleVar()
        self.entry = Tk.Entry(frPic, textvariable=a)
        a.set(round(self.entry.get(), 2))

        self.entry.grid(row=0)
if __name__ == '__main__':
    app = InterfaceApp(root)
    root.mainloop()

Tags: importself内容tkinterdefroottkgrid
2条回答

我想你想要的不是四舍五入浮点值本身,而是要显示一个精度为n个小数点的浮点值。试试这个:

>>> n = 2
>>> '{:.{}f}'.format( 3.1415926535, n )
'3.14'
>>> n = 3
>>> '{:.{}f}'.format( 3.1415926535, n )
'3.142'

注意:在代码中,您尝试取整self.entry,也就是说,您尝试取整Tk.Entry类型的实例。您应该使用self.entry.get(),它为您提供一个字符串。在

如果您不熟悉这种字符串格式,我使用look here。在

您没有得到预期的结果,因为当您在initialize()内运行a.set(round(self.entry, 2))时,self.entry.get()的值总是0(创建后的默认值)

您需要将一个callback附加到一个按钮小部件上,按下后,您要查找的行为将在该小部件上执行:

import Tkinter as Tk

root = Tk.Tk()

class InterfaceApp():

    def __init__(self,parent):
        self.parent = parent
        root.title("P")
        self.initialize()

    def initialize(self):
        frPic = Tk.Frame(bg='', colormap='new')
        frPic.grid(row=0, column=0)
        self.a = Tk.DoubleVar()
        self.entry = Tk.Entry(frPic, textvariable=self.a)
        self.entry.insert(Tk.INSERT,0)
        self.entry.grid(row=0, column=0)
        # Add a button widget with a callback
        self.button = Tk.Button(frPic, text='Press', command=self.round_n_decimal)
        self.button.grid(row=1, column=0)
    # Callback    
    def round_n_decimal(self):      
       self.a.set(round(float(self.entry.get()), 2))

if __name__ == '__main__':
    app = InterfaceApp(root)
    root.mainloop()

相关问题 更多 >

    热门问题