Почему обрезает число? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Я человек простой и вопрос у меня тоже) Суть задания, с суммы от 2000 вычислить скидку 3%, если 5000-5%. Программа рабочая, но в функции public void Discount() Не так считает скидку. На сумму 2000 выводит правильно 3%-60грн скидку. А вот 3010, скидка 3 %, выводит 90 грн, хотя должно быть 90,3. На сумму 2660 выводит 78, а должно 79,8. Я пробjвала и double и float. В С# недавно пришла с С++, не знаю, может спецификаторы какие надо, на подобии (setprecision()).
Листинг программы
  1. namespace ConsoleApplication4
  2. {
  3. class Program
  4. {
  5. public int Sum=0;
  6. public void Buy(int A,int B,int C,int D){
  7. int Q = 0;
  8. do
  9. {
  10. Console.Write("Какие билеты хотите купить?\n\t\t1-A\t\t2-B\n\t\t3-C\t\t4-D\n\t\t\t0-Выход\n");
  11. Q = Convert.ToInt32(Console.ReadLine());
  12. switch (Q)
  13. {
  14. case 1:
  15. Sum += A;
  16. break;
  17. case 2:
  18. Sum += B;
  19. break;
  20. case 3:
  21. Sum += C;
  22. break;
  23. case 4:
  24. Sum += D;
  25. break;
  26. case 0:
  27. break;
  28. }
  29. }
  30. while (Q > 0);
  31. Console.Write("Суммарная стоимость купленных билетов: " + Sum + "\n");
  32. }
  33. public void Discount()
  34. {
  35. float discount=0;
  36. if (Sum >= 2000 && Sum < 5000)discount = (Sum / 100) * 3;
  37. if (Sum >= 5000) discount = (Sum / 100) * 5;
  38. Console.Write("Сумма билетов с учетом скидки: " + discount + "\n");
  39. }
  40. static void Main(string[] args)
  41. {
  42. Program d1 = new Program();
  43. d1.Buy(20, 30, 50, 100);
  44. d1.Discount();
  45. }
  46. }
  47. }
И да, там не логично получилось. Я изменю потом там строку на такую
Листинг программы
  1. Console.Write("Сумма билетов с учетом скидки: " + (Sum-discount) + "\n");

Решение задачи: «Почему обрезает число?»

textual
Листинг программы
  1. discount = ((double)Sum / 100) * 3;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы