我试图使用一个进度对话框来显示两个时间密集型函数完成的时间。
在我的第一个函数中,我有一个db条目的总数和一个计数器,用于计算我执行do/while循环的次数。完成后,进度对话框应为50%
所以我要:
double total = (counter/dbEntries)*100; //counter and dbEntries are both int's
然后我把总数除以
2
,因为我需要完成一半的工作量,因为有两个函数double realPercentDone = total/2.0;
因此,假设
counter is 3
和dbEntries is 36
等于0.08 or 8% when multiplied by 100
但总和始终为0。我做错什么了? 最佳答案
如果counter
和dbEntries
都是整数,那么它很可能在第一个表达式的括号中执行整数除法。3 div 36 = 0
。
试着把它改成这样:
double total = 100.0 * counter / dbEntries;
或
double total = (1.0 * counter / dbEntries) * 100.0;
注意:使用
100.0
和不使用100
进行浮点计算。