こんにちは、DELAY をミリ秒からマイクロ秒に変換して double に格納しようとしています。しかし、以下のコードを使用すると、出力 0.000000 が生成されます。計算機では、500 が DELAY の場合は 0.500000 であるため、「struct timeval」で使用できるため、目的の結果として機能します。
#define DELAY 500
double num = (DELAY / 1000);
printf("Num: %lf",num);
これ:
(DELAY / 1000);
は整数演算であり、DELAY
が 1000 未満の場合は 0 と評価されます。次のように変更します。
(DELAY / 1000.0);
これは整数除算を使用します。
double num = (DELAY / 1000);
を浮動定数に変更する1000
と、必要な結果が得られます。
double num = (DELAY / 1000.0);
これは、除算がそのオペランドに対して通常の算術変換を実行するため、この場合はDELAYもdoubleに変換されるためです。
注ミリ秒からマイクロ秒に変換する場合は、割り算ではなく掛け算を行うことに注意してください1000
。
除算を整数として行い、変換します
試す:
#define DELAY 500f
double num = (DELAY / 1000f);
printf("Num: %lf",num);