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