1

嗨,我正在尝试将 DELAY 从毫秒转换为微秒并将其存储在双精度中。但是,当我使用下面的代码时,它会产生输出 0.000000 在计算器上,如果 500 是我想要的结果,那么 DELAY 是 0.500000,所以我可以将它与“struct timeval”一起使用。

#define DELAY 500
double num = (DELAY / 1000);

printf("Num: %lf",num);
4

3 回答 3

3

这个:

(DELAY / 1000);

是整数算术,当DELAY小于 1000 时计算为零,更改为:

(DELAY / 1000.0);
于 2013-10-13T02:43:10.013 回答
2

这将使用整数除法:

 double num = (DELAY / 1000);

如果将 更改1000浮动常量,那么您将获得所需的结果:

double num = (DELAY / 1000.0);

这是有效的,因为除法将对其操作数执行通常的算术转换,在这种情况下,这将导致DELAY也被转换为精度数。

注意可能值得注意的是,如果要将毫秒转换为微秒,则需要乘以1000不除。

于 2013-10-13T02:44:16.847 回答
0

它将除法作为整数然后转换

尝试:

#define DELAY 500f
double num = (DELAY / 1000f);

printf("Num: %lf",num);
于 2013-10-13T02:43:25.810 回答