I have this function I am writing.
const int ProgressBarLength = 230;
foreach (TransactionDetail item in list)
{
var itemProgress =
((ProgressBarLength/item.PurchasesRequired) *
Convert.ToInt32(item.TransactionAmount));
item.ProgressBar = itemProgress > ProgressBarLength ? ProgressBarLength : itemProgress;
}
Now I have 2 TransactionDetails in my loop.
If item.PurchasesRequired = 500 and TransactionAmount = 199.0 the resulting value is 0. However, if item.PurchasesRequired = 5 and TransactionAmount = 94.0 it returns a valid result.
What am I doing wrong?
It looks like you’re performing integer division.
230 / 500 is zero in integer division, whereas 230 / 5 is 46.
You can force floating-point division by casting
PurchasesRequiredto adouble. 230 / 500 is 0.46 in floating-point division, as you’d expect.