计算机能否将相同的浮点数舍入为两个不同的方向?

我正在使用Node.JS运行我的Philips Hue灯条,并使其与全天的相对亮度和色温相匹配,并且该系统设计为每5秒运行一次,如果检测到每个循环之间有变化,则剪切程序。 。我通过将色温和亮度设置为等式的输出来实现此目的,其中x是当前时间,显然这些返回浮点数

我当前正在告诉程序将其四舍五入到最接近的数字,然后将四舍五入的数字设置为温度/亮度,然后将另一个设置(直接从灯泡开始,而不是变量)记录到该变量中,然后进行下一个循环以查看是否该变量与灯泡设置匹配。如果不同,则手动对其进行更改,从而切断程序,以便将灯泡设置为所需的灯泡

但是我遇到了几个问题,在下一个循环中,在灯泡更新之前(因此它应该是相同的值),它读取的当前设置是上次记录的设置的+ -1。我想知道这是否可能是由于数字实际上是在两个不同的方向上四舍五入,所以当它设置数字时,它会四舍五入,但是在记录输出时,计算机估计值实际上将它设置得有点高并四舍五入代替

TL; DR:我用一个舍入的浮点数设置了一个值,我记录了应该相同的设置,最终得到了应该设置为+ -1的值

评论
  • 大宝剑
    大宝剑 回复

    我找到了原因,不是因为浮点错误,而是因为我每隔5000ms使用一次setInterval,并且有时它在调用下一个循环之前没有完成对灯光的调用,导致调整了的值在保存该值之前,指示灯会亮起,因此最终会在期待旧值的下一个循环中结束。解决方法是找到除setInterval之外每5秒循环一次的另一种方法