Reputation: 73753
I am trying to use a progress dialog to show how long until 2 time intensive functions are done.
in my first function I have the total number to db entries and a counter for how many times i have gone through a do/while loop. when that gets done the progress dialog should be at 50%
so I do:
double total = (counter/dbEntries)*100; //counter and dbEntries are both int's
then I divide total by 2
because I want half the amount done because there are 2 functions
double realPercentDone = total/2.0;
so say counter is 3
and dbEntries is 36
that would equal 0.08 or 8% when multiplied by 100
but total is always 0. What am I doing wrong?
Upvotes: 2
Views: 1818
Reputation: 25761
Also, note that if you always divide total by 2, then you will never get to 100%, you will range between 0% and 50%.
Upvotes: 0
Reputation: 56853
If counter
and dbEntries
are both integers then it is likely performing integer division in the parenthesis of your first expression. 3 div 36 = 0
.
Try changing it to something like this:
double total = 100.0 * counter / dbEntries;
or
double total = (1.0 * counter / dbEntries) * 100.0;
Note: use 100.0
and not 100
so as floating point calculations are done.
Upvotes: 3
Reputation: 39807
You should either cast, or use the double type for counter
and entries
. I assume you're using ints currently, and as ints go, 3/36=0, and of course 0*100 is still 0.
Upvotes: 0