试试将小数对应的字符串传入 Decimal ,而非已经解析为 float 类型的数值。
>>> Decimal(1.2)
Decimal('1.1999999999999999555910790149937383830547332763671875')
>>> Decimal('1.2')
Decimal('1.2')
回到你说的案例:
>>> result = Decimal('1.2') * Decimal('9')
>>> print(f'1.2 * 9 = {result}')
1.2 * 9 = 10.8
是可以得到正确的答案。
如何按键盘的数字键来驱动计算器的相应按钮?
这个需要参考你使用的图形界面框架,通常不需要对 Windows 窗口事件进行 Hook。
例如 Python 自带的 GUI 框架是 Tk,可以绑定 <KeyPress> 事件来获取在这个窗口输入的按键。
下面是一个简单的例子:
# 处理 Windows 下的 HiDPI 窗口渲染
try:
from ctypes import windll
windll.shcore.SetProcessDpiAwareness(1)
except:
pass # ignored
# tk 框架代码开始
import tkinter as tk
window = tk.Tk()
window.geometry("400x200")
def key_press(e):
print(f'处理按键事件 {e}')
# 将字符插入或删除
if e.keysym == 'BackSpace':
new_text = lb_input.cget('text')[:-1]
else:
new_text = lb_input.cget('text') + e.char
# 显示新的字符串
lb_input.config(text=new_text)
lb_info = tk.Label(window, text="按下按键来预览")
lb_info.pack(pady=20)
lb_input = tk.Label(window, text="")
lb_input.pack(pady=20)
# 绑定事件到窗口
window.bind('<KeyPress>', key_press)
# 窗体事件循环
window.mainloop()
效果如下,在窗口按下按键来更新 lb_input 标签内容:
|