嗨,我正在尝试将 DELAY 从毫秒转换为微秒并将其存储在双精度中。但是,当我使用下面的代码时,它会产生输出 0.000000 在计算器上,如果 500 是我想要的结果,那么 DELAY 是 0.500000,所以我可以将它与“struct timeval”一起使用。
#define DELAY 500
double num = (DELAY / 1000);
printf("Num: %lf",num);
这个:
(DELAY / 1000);
是整数算术,当DELAY
小于 1000 时计算为零,更改为:
(DELAY / 1000.0);
这将使用整数除法:
double num = (DELAY / 1000);
如果将 更改1000
为浮动常量,那么您将获得所需的结果:
double num = (DELAY / 1000.0);
这是有效的,因为除法将对其操作数执行通常的算术转换,在这种情况下,这将导致DELAY也被转换为双精度数。
注意可能值得注意的是,如果要将毫秒转换为微秒,则需要乘以1000
不除。
它将除法作为整数然后转换
尝试:
#define DELAY 500f
double num = (DELAY / 1000f);
printf("Num: %lf",num);