Может кто-то сказать, что случилось с моим кодом?расчет скидки в C# ошибка при присвоении значения
Я уже пробовал кастинг сначала, но я получаю тот же результат.
/// <summary>
/// Discount function
/// </summary>
/// <param name="ToDiscount">Price of an item</param>
/// <param name="Discount">Discount</param>
/// <param name="Type">Percent or Amount</param>
/// <returns></returns>
private decimal Discount(decimal ToDiscount, int Discount, DiscountType Type)
{
decimal temp = 0;
try
{
if (Type == DiscountType.Percent)
{
int d = Convert.ToInt32((Discount/100) * ToDiscount);
decimal f = ToDiscount - d;
temp = f;
}
else if (Type == DiscountType.Currency)
{
decimal FinalDiscount = ToDiscount - Discount;
temp = FinalDiscount;
}
}
catch (Exception ex)
{
Functions.ShowError(ex);
}
return temp;
}
Пример:
Discount(5000, 5, DiscountType.Percent);
//calculation: (5/100) * 5000 = 250
//discount: 5000 - 250 = 4750
но с этой функцией я создал я получаю результат 5000. вместо 4750. я сделал точку останова на возвр; но когда я нахожу эту часть int d = Convert.ToInt32((Discount/100) * ToDiscount);
ответа или результата нет.
В чем именно ошибка, которую вы получаете? Разве это не компилируется? Вызывает ли это исключение? Возвращает ли оно неправильное значение? – Chris
как вы пытались отличить точно? это будет работать нормально, если вы скидка скидка в два раза или десятичная –
@ selman22 'int a = Discount/100; double b = Convert.ToDouble (a * ToDiscount); double c = Convert.ToDouble (ToDiscount) - b; ' – mardagz