在我的应用程序中,我每 12 小时将一个变量(流)重置为零。为此,我有一个逻辑,但它没有按预期工作。我得到的时间是小时格式。当时间达到 12 时,变量 Flow 变为零,但下一秒它应该再次开始读取当前值。但从我的逻辑来看,它开始读取第 13 小时。
这是示例代码
int _tmain(int argc, _TCHAR* argv[])
{
double dtime;
int iTime;
double flow = 2.000;
printf("Enter time: ");
scanf(" %lf",&dtime);
iTime = (int)dtime;
if(iTime% 12==0)
{
flow=0;
}
printf("Time: %d\n",iTime);
printf("Flow: %lf",flow);
getch();
return 0;
}
如果时间 11.3614 像这样,则流量为 2。如果时间精确到 12,那么对于那一秒,流量 =0。然后在下一秒再次开始读取流量值。这里的流量值是从其他函数连续读取的。但是在这个示例代码中,为了便于理解,我进行了硬编码。
如果时间是 12.023,当我将 double 转换为 int 时,它只返回 12。但是按照我的要求,这次它开始读取值。如何在不丢失分数的情况下将 double 转换为 int?
我试过了
iTime = (int)(dtime+0.5);
但同样,iTime 变为 13 仅 dtime 大于 12.5。