我试图使用一个进度对话框来显示两个时间密集型函数完成的时间。
在我的第一个函数中,我有一个db条目的总数和一个计数器,用于计算我执行do/while循环的次数。完成后,进度对话框应为50%
所以我要:

double total = (counter/dbEntries)*100; //counter and dbEntries are both int's

然后我把总数除以2,因为我需要完成一半的工作量,因为有两个函数
double realPercentDone = total/2.0;

因此,假设counter is 3dbEntries is 36等于0.08 or 8% when multiplied by 100但总和始终为0。我做错什么了?

最佳答案

如果counterdbEntries都是整数,那么它很可能在第一个表达式的括号中执行整数除法。3 div 36 = 0
试着把它改成这样:

double total = 100.0 * counter / dbEntries;


double total = (1.0 * counter / dbEntries) * 100.0;

注意:使用100.0和不使用100进行浮点计算。

07-28 03:43