为了账号安全,请及时绑定邮箱和手机立即绑定

speed向上取整和向下取整

speed > 0 ? speed = Math.ceil(speed) : speed = Math.floor(speed);

为什么大于0 要向上取整,小于0 要向下取整?

正在回答

2 回答

因为之前定时器的循环里,因为最后结果都是差零点几,结果最后导致多执行一次来满足target,然后最后运动的距离就超出了,负的向下取整,正的向上取就是为了弥补上除法除出来差的那零点几,然后就不会多执行那一次循环,就避免了超出和未运动到的情况

0 回复 有任何疑惑可以回复我~
#1

Gady啊 提问者

非常感谢!
2016-08-23 回复 有任何疑惑可以回复我~
#2

暮女神

您能回答得专业点么?这两种情况都是未运动到好嘛!
2017-04-28 回复 有任何疑惑可以回复我~

当speed负值时=-0.9、-0.8、-0.7...时,向上取整时speed值=0,此后的速度一直为0,所以要向下取整-0.9、-0.8...向下取整等于-1;同理当speed为正值时0.9、0.8、0.7...向上取=1,向下取=0;   

至于为什么要取整,是因为offsetWidth等像素值最小单元为1px,有小数存在时会四舍五入,当接近目标值时speed值小于0.5时,此时的obj.offsetWidth小数位<0.5时就永远地进不了位(如196.4四舍五入为196);

3 回复 有任何疑惑可以回复我~
#1

暮女神

默认不是四舍五入吧?默认就是向下取整
2017-04-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

speed向上取整和向下取整

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信