1

こんにちは、DELAY をミリ秒からマイクロ秒に変換して double に格納しようとしています。しかし、以下のコードを使用すると、出力 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 未満の場合は 0 と評価されます。次のように変更します。

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

これは整数除算を使用します。

 double num = (DELAY / 1000);

を浮動定数に変更する1000と、必要な結果が得られます。

double num = (DELAY / 1000.0);

これは、除算がそのオペランドに対して通常の算術変換を実行するため、この場合はDELAYもdoubleに変換されるためです。

ミリ秒からマイクロ秒に変換する場合は、割り算ではなく掛け算を行うことに注意してください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 に答える