0

アプリケーション/設定ファイルに Double 型の変数を挿入し、"while" ループを使用して小さな計算を実行しています。

double final=0;
double cost = application.settings.default.cost; // 0.15
while(true) 
{
    Thread.Sleep(1000); //speeded up version of 60000 (1 minute)
    final+=cost;
    //code that waits for the user to quit the loop
}

1 時間後の結果は 9.00 になるはずですが、計算すると 24.00 のようになります :/ ただし、値をコードにハードコードすると、目的の結果 9.00 が得られます

double final=0;
double cost = 0.15
while(true) 
{
    Thread.Sleep(1000); //speeded up version of 60000 (1 minute)
    final+=cost;
    //code that waits for the user to quit the loop
}

何か案は?

4

1 に答える 1

3

Thread.Sleep(1000); コードが毎秒正確に実行されるという意味ではありません。この方法でコードを 1 時間 10 回実行すると、10 個の異なる結果が得られます。

これはここでも議論されました: Thread.Sleep(TimeSpan) はどのくらい正確ですか?

(ただし、Thread.Sleep は TimeSpan で使用されます。主な問題は同じままです)

編集:

何を計算しているのか正確にはわかりません。しかし、この方法でコストを計算することは、非常に不正確であるため、良い方法ではありません。

コストの計算を開始するときにタイムスタンプを取得し、完了したら別のタイムスタンプを取得することをお勧めします。両方のタイムスタンプの差を取ると、コストを非常に正確に計算できます。コードの実行時間が長くなるほど、メソッドはますます不正確になります。

于 2013-10-19T15:44:03.983 に答える