moveBy的误差是bug吗?

发现moveBy的结果不精确,例如cc.moveBy(moveTime, 0, -50);
但发现,移动后的Y的变化,有时是49.99999,有时是50.000001,当然,也有时是准确的50。因为这原因,导致了程序中判断坐标时候出错了。当然可以自己四舍五入解决这问题,但很好奇,这是bug吗?
请多指教,谢谢!

这是因为坐标是用浮点数表示的, 浮点数底层的表示机制,没办法精确判断相等。

神奇的论坛啊,又是秒回。感谢感谢,那也就是说,移动后需要自己四舍五入了对吧?

https://www.jianshu.com/p/681de2d53d0b
你可以参考这个链接,两数相减的绝对值小于某个非常小的数就可以认定是相等。
如果你是想要移动到指定坐标之后再执行函数可以用cc.callFunc配合cc.sequence

嗯嗯,我采用了相减后绝对值小于某个非常小的数字就认为相等的方法了。多谢多谢。

别断点直接打印就是对的!

和断点之类的无关,就是精度问题

:rofl:我是自己转成了字符串然后处理精度再做的比较。。。主要是不仅仅要判断等于,还要判断大于等于和小于等于,这种做误差判断就很难受

嗯嗯,浮点数精度这问题在各行各业都存在。特别是金融软件,有时候万一考虑不足就后果严重