预计剩余时间,我缺少什么

本文关键字:什么 时间 余时间 | 更新日期: 2023-09-27 18:22:20

我认为我的逻辑有缺陷。。。。

在一个循环中我有:

int seconds = (int) (elapsed.TotalSeconds / ItemPos) * (Count - ItemPos);

这个循环大约每秒更新一次。。。。

我遇到的问题是秒总是以零值结束。

这是因为CCD_ 1的值在第一个循环之后总是高于CCD_。

例如:

如果3秒通过

ItemCount = 20 , so 3/20 = 0.15 - rounds to zero.... 0 * anything = 0......

我做错了什么?

预计剩余时间,我缺少什么

您的表达式被解释为

( (int)(elapsed.TotalSeconds / ItemPos) ) * (Count - ItemPos);

你必须延迟类型转换,你只需要一对额外的():

 //int seconds = (int)   (elapsed.TotalSeconds / ItemPos) * (Count - ItemPos)  ;
   int seconds = (int) ( (elapsed.TotalSeconds / ItemPos) * (Count - ItemPos) );

整数除法总是返回一个int,当结果为0时,它会截断为0。

让一些东西真正有价值,你就没事了。或者,先乘后除:

int seconds=(int)((float)已过去。TotalSeconds/ItemPos)*(Count-ItemPos

(见下文)

 int seconds = (int) (elapsed.TotalSeconds * (Count - ItemPos) / ItemPos);

编辑

根据dtb的评论,我意识到我把打字稿放错了地方。我的第一行不行(尽管我的第二行仍然行)。现在的情况是,您从TotalSeconds中获取double值,并将其除以int ItemPos,得到一个double。但随后将其强制转换为int,也就是将其设置为0的位置。正如Henk Holterman所说,你必须添加额外的括号,这样打字就可以覆盖整个部门:

 int seconds = (int) ((elapsed.TotalSeconds / ItemPos) * (Count - ItemPos));