2017-05-27 6 views
1

私は簡単な質問があります。そのシンプルですが、私は非常に混乱しています。私はターミナルを使用してCでタイマーを作成しています。私は、SUBTRACT_CONSTの値を減算する信号を送るためにSIGALRMを使用しています。私は25 TICKS_PER_SECONDまたは1/25私の減算定数0.0400があると仮定しています。私はitimer構造体に設定された40000usごとに離れるシグナルハンドラとタイマーをインストールしました。しかし、私の機能の1つでは、時間がゼロになったときに私は「キャッチ」できません。このTICK_PER_SECOND値が32または16の場合、期待どおりに動作します。私の比較は、これらの異なるティックタイムを捕まえるようには見えない。減算されているこの値を保持している私の時間変数はdoubleです。ダブルがゼロの場合の確認

if(TIME == 0) //my very simple comparison 
+0

私はこれを既に試してみました。私のタイマーは負の時間にカウントダウンします。 0になると、この条件は常に満たされます。 –

+1

ちょうど1のステップで25からカウントダウンする '整数'を使用してください。 – harold

+0

あなたはちょうど適切な条件を使用する必要があります、ちょうど正確な比較を使用することはできません。たとえば、 'if(TIME <0.00001)... 'というようなものです。 @haroldが言ったことをして、あなたの問題を整数に解決してください。 – lurker

答えて

1

あなたはタイマーのための浮動小数点数を使用する場合は、おそらく唯一の方法は次のように条件を使用することです:

数が実質的にゼロ手段より e-9のような非常に小さな値である
if(abs(TIME) < number)... 

関連する問題