Reputation: 5
int temp;
res = int.TryParse(discountTextBox.Text, out temp);
if (res == false)
{
MessageBox.Show("Enter Discount in integers", "Error");
return;
}
double Discount = (double) temp;
if (!transactiondao.ValidateDiscount(curremployee, Discount, retail))
{
MessageBox.Show("Invalid Discount entered", "error");
return;
}
Above block of code calls the method below. However, while debugging discount has the value that user specified. After the if block is executed however, it changes to 0.
public bool ValidateDiscount(Employee emp, double GivenDiscount, int retailprice)
{
bool res = false;
double sMaxDiscount = emp.GetAuthorizedMaxDiscount();
//validating against retail price
double rMaxDiscount;
if (retailprice == 2000)
rMaxDiscount = 4;
else if (retailprice == 3000)
rMaxDiscount = 5;
else if (retailprice == 4000)
rMaxDiscount = 8;
else
rMaxDiscount = -1;
double MaxDiscount;
if (sMaxDiscount >= rMaxDiscount)
MaxDiscount = sMaxDiscount;
else
MaxDiscount = rMaxDiscount;
if (GivenDiscount < MaxDiscount)
{
res = true;
}
return res;
}
here is the call to ValidateDiscount. commenting out the if block and thus bypassing validatediscount works perfectly and discount retains the value entered by user. How does this happen?
Upvotes: 0
Views: 55
Reputation: 1582
You declared temp
as an int
, later you cast temp
as a double. This won't give the desired result. Try this.
double temp;
res = double.TryParse(discountTextBox.Text, out temp);
Upvotes: 1