浮点数和usleep问题

时间:2011-06-14 12:30:54

标签: c usleep

我正在编写具有该段代码的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

如何摆脱这个错误?

2 个答案:

答案 0 :(得分:1)

没有错误,你只是不明白二进制浮点数学是如何工作的。

答案 1 :(得分:0)

看起来像printf中的舍入稳定性错误。

尝试:printf(“tick is%。3f,fire time is%。3f \ n”,t-> tick,t-> firing_time);