如何解决浮点数和睡眠问题
| 我正在编写具有这段代码的应用程序,其中t-> tick是浮动的:usleep(1000);
t->tick = t->tick + 0.001;
printf(\"tick is %f,firing time is %f\\n\",t->tick,t->firing_time);
我发现usleep中有错误?
tick is 0.313000,firing time is 2.000000
tick is 0.314000,firing time is 2.000000
tick is 0.314999,firing time is 2.000000
tick is 0.315999,firing time is 2.000000
如何摆脱那个错误?
解决方法
没有错误,您根本不了解二进制浮点数学运算的原理。
, 看起来像是printf中的舍入稳定性错误。
试试:printf(\“ tick是%.3f,触发时间是%.3f \\ n \”,t-> tick,t-> firing_time);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。