我正在编写具有该段代码的app,其中t-> tick是float:
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
如何摆脱这个错误?
答案 0 :(得分:1)
没有错误,你只是不明白二进制浮点数学是如何工作的。
答案 1 :(得分:0)
看起来像printf中的舍入稳定性错误。
尝试:printf(“tick is%。3f,fire time is%。3f \ n”,t-> tick,t-> firing_time);