【问题标题】:Python math not adding up? [duplicate]Python数学没有加起来? [复制]
【发布时间】:2022-01-14 06:40:49
【问题描述】:

尝试创建一个非常简单的时钟作为我程序的一部分,它每 0.05 秒增加 0.05 秒。它没有按我的意图工作。我的相关代码如下所示,我在 pygame 窗口上显示时钟本身。

clocknum = clocknum + 0.05 # these 3 lines here are contained within a while loop for the rest of my game so constantly repeating
showclock(clocknum)
time.sleep(0.05)

def showclock(clocknum):
font = pygame.font.SysFont('bahnschrift', 20)
text = font.render(str(clocknum), 1, (0, 0, 0))
screen.blit(text, (5, 700))

而不是像预期的那样以 5 的倍数上升,而是给出接近但不太准确的数字,例如:

3.349999999999999

基本上,计算器并不完全准确,我想知道为什么,可能是由于我使用的数据类型?只是一个简单的整数,有没有更好的方法来做到这一点?感谢所有帮助

【问题讨论】:

  • 这能回答你的问题吗? Is floating point math broken?
  • 是的,谢谢,我想我的问题是您概述的内容和@Aron Atilla Hegedus 的观点的结合。谢谢

标签: python time pygame


【解决方案1】:

如果您正在睡觉,然后还进行了一些计算,那么它永远不会精确地睡 0.05 秒,因为在此期间它需要做一些事情。我建议您将其四舍五入到最接近的 2dp。

【讨论】:

  • 这个答案具有误导性,表明观察到的行为与执行时间有关。变量clocknum 从未被赋予从时钟派生的值。这只是一个浮点问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 2014-03-21
  • 2011-05-12
  • 1970-01-01
  • 2020-10-20
  • 1970-01-01
相关资源
最近更新 更多