0

t->tickがfloatであるコードの一部を持つIm書き込みアプリ:

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

そのエラーを取り除く方法は?

4

2 に答える 2

1

エラーはありません。2 進浮動小数点演算がどのように機能するかを理解していないだけです。

于 2011-06-14T12:42:58.340 に答える
0

printfの丸め安定性エラーのように見えます。

試してください:printf( "tick is%.3f、fire time is%.3f \ n"、t-> tick、t-> fireing_time);

于 2011-06-14T12:36:37.183 に答える