Почему обрезает число? - C#
Формулировка задачи:
Здравствуйте. Я человек простой и вопрос у меня тоже) Суть задания, с суммы от 2000 вычислить скидку 3%, если 5000-5%.
Программа рабочая, но в функции public void Discount() Не так считает скидку. На сумму 2000 выводит правильно 3%-60грн скидку. А вот 3010, скидка 3 %, выводит 90 грн, хотя должно быть 90,3. На сумму 2660 выводит 78, а должно 79,8. Я пробjвала и double и float. В С# недавно пришла с С++, не знаю, может спецификаторы какие надо, на подобии (setprecision()).
namespace ConsoleApplication4
{
class Program
{
public int Sum=0;
public void Buy(int A,int B,int C,int D){
int Q = 0;
do
{
Console.Write("Какие билеты хотите купить?\n\t\t1-A\t\t2-B\n\t\t3-C\t\t4-D\n\t\t\t0-Выход\n");
Q = Convert.ToInt32(Console.ReadLine());
switch (Q)
{
case 1:
Sum += A;
break;
case 2:
Sum += B;
break;
case 3:
Sum += C;
break;
case 4:
Sum += D;
break;
case 0:
break;
}
}
while (Q > 0);
Console.Write("Суммарная стоимость купленных билетов: " + Sum + "\n");
}
public void Discount()
{
float discount=0;
if (Sum >= 2000 && Sum < 5000)discount = (Sum / 100) * 3;
if (Sum >= 5000) discount = (Sum / 100) * 5;
Console.Write("Сумма билетов с учетом скидки: " + discount + "\n");
}
static void Main(string[] args)
{
Program d1 = new Program();
d1.Buy(20, 30, 50, 100);
d1.Discount();
}
}
}
И да, там не логично получилось. Я изменю потом там строку на такую
Console.Write("Сумма билетов с учетом скидки: " + (Sum-discount) + "\n");Решение задачи: «Почему обрезает число?»
textual
Листинг программы
discount = ((double)Sum / 100) * 3;