Почему обрезает число? - 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;

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


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

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

8   голосов , оценка 3.875 из 5
Похожие ответы