Почему обрезает число? - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д