python中decimal模块_python的decimal模块中的文本无效
好吧,这一切都是从臭名昭著的浮点运算开始的。我做了一个简单的国际象棋时钟,因为在国际象棋中秒数往往变得很重要,我想每0.01秒更新一次时钟。这就是为什么我不使用int变量。我试过用浮点变量来实现,但是对于一个玩家来说,看到31.28999999999999而不是31.29真的很烦人。然后在google上搜索这个问题,我找到了decimal模块,它看起来很酷,似乎是一个解决方案,但是现在我收到了以下
好吧,这一切都是从臭名昭著的浮点运算开始的。我做了一个简单的国际象棋时钟,因为在国际象棋中秒数往往变得很重要,我想每0.01秒更新一次时钟。这就是为什么我不使用int变量。我试过用浮点变量来实现,但是对于一个玩家来说,看到31.28999999999999而不是31.29真的很烦人。然后在google上搜索这个问题,我找到了decimal模块,它看起来很酷,似乎是一个解决方案,但是现在我收到了以下错误:Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/tkinter/__init__.py", line 1475, in __call__
return self.func(*args)
File "/Users/maciek/Documents/chessclock/chessclock2.py", line 8, in player1move
x=float(player2.get())
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/tkinter/__init__.py", line 313, in get
return getint(self._tk.globalgetvar(self._name))
ValueError: invalid literal for int() with base 10: '29.21'
我认为值得注意的是,当两位选手都有30秒的时间时,第一步的效果很好。我不包括player2move函数的代码,因为它是类似的。除了修正我的十进制用法外,我还对如何使浮动值正确显示持开放态度(对于人眼,也就是说,对于计算机31.28999999999999是正确的值)。
我的代码是:
^{pr2}$
谢谢你的时间!在
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)