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

线程.睡眠(1000);并不意味着您的代码每秒都会准确执行。如果您以这种方式运行代码 10 次,持续 1 小时,您将获得 10 种不同的结果。

此处也对此进行了讨论: Thread.Sleep(TimeSpan) 的准确性如何?

(尽管 Thread.Sleep 与 TimeSpan 一起使用。主要问题保持不变)

编辑:

我不知道你到底在计算什么。但是以这种方式计算成本并不是一个好方法,因为它非常不准确。

最好在开始计算成本时记下时间戳,并在完成后记下另一个时间戳。取两个时间戳的差异,您可以非常准确地计算成本。您的代码运行时间越长,您的方法就越不准确。

于 2013-10-19T15:44:03.983 回答