C 检查double何时为零

C 检查double何时为零,c,C,我有一个简短的问题。这很简单,但我很困惑。我正在使用终端在C中创建一个计时器。我正在使用SIGALRM发送减去SUBTRACT_CONST值的信号。我假设每秒有25个滴答声或1/25,即0.0400我的减法常数。我已经在itimer结构中安装了信号处理程序和定时器,使其每设置40000us就启动一次。然而,在我的一个函数中,当时间变为零时,我无法“捕捉”。当此滴答声/秒值为32或16时,它将按预期工作。我的比较似乎没有抓住这些不同的滴答声时间。我的时间变量是一个双精度变量,它保存着这个被减去的值

我有一个简短的问题。这很简单,但我很困惑。我正在使用终端在C中创建一个计时器。我正在使用SIGALRM发送减去SUBTRACT_CONST值的信号。我假设每秒有25个滴答声或1/25,即0.0400我的减法常数。我已经在itimer结构中安装了信号处理程序和定时器,使其每设置40000us就启动一次。然而,在我的一个函数中,当时间变为零时,我无法“捕捉”。当此滴答声/秒值为32或16时,它将按预期工作。我的比较似乎没有抓住这些不同的滴答声时间。我的时间变量是一个双精度变量,它保存着这个被减去的值

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

如果计时器使用浮点数,则唯一的方法可能是使用以下条件:

if(abs(TIME) < number )... 
if(abs(时间)

其中,数字是非常小的值,如
e-9
,表示实际上为零。

我已经尝试过了。我的计时器倒计时到负计时。一旦它变为小于0,则始终满足此条件。只需使用
int
,在1的步骤中从25开始倒数。只需使用适当的条件,就无法使用精确的比较。例如,
if(TIME<0.00001).
或类似的东西。或者按照@harold所说的去做,把你的问题转化为整数。用整数类型倒计时,而不是用浮点类型倒计时秒数(基本上是@harold所建议的)。