【MATLAB】解决mod函数、逻辑判断的误差问题
- 游戏开发
- 2025-09-02 22:51:01

问题描述
希望当时间t为T的整数倍时,输出1,其他时刻输出0。理论上,用mod(t,T)==0即可,但t是很小的数,T也是很小的数,在mod时会产生误差。
问题解决时间t在递增时,不知道什么原因产生了误差
理论值:1e-7,2e-7,3e-7……;实际值:1e-7,2e-7,2.9999e-7……最后,用mod(2.9999e-7,1e-7)会得到0.999e-7。
可以用round函数,进行四舍五入
abs(t-T*round(t/T))<1e-8
解释:
当t=2.9999e-7,T=1e-7时,t/T=2.9999,round(t/T)=3T*round(t/T)=3e-7,也就是理论值abs(t-T*round(t/T))=0.0001e-7,用实际值-理论值再取绝对值,就是误差当误差小于某个值时,认为理论值=实际值,即可输出1。因此1e-8就是误差线,可以灵活调整。【MATLAB】解决mod函数、逻辑判断的误差问题由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【MATLAB】解决mod函数、逻辑判断的误差问题”
上一篇
【强化学习】随机策略的策略梯度