Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 29

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

23.03.2017, 17:11. Показов 1504. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я человек простой и вопрос у меня тоже) Суть задания, с суммы от 2000 вычислить скидку 3%, если 5000-5%.
Программа рабочая, но в функции public void Discount() Не так считает скидку. На сумму 2000 выводит правильно 3%-60грн скидку. А вот 3010, скидка 3 %, выводит 90 грн, хотя должно быть 90,3. На сумму 2660 выводит 78, а должно 79,8. Я пробjвала и double и float. В С# недавно пришла с С++, не знаю, может спецификаторы какие надо, на подобии (setprecision()).

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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();
        }
    }
}
Добавлено через 3 минуты
И да, там не логично получилось. Я изменю потом там строку на такую
C#
1
Console.Write("Сумма билетов с учетом скидки: " + (Sum-discount) + "\n");
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2017, 17:11
Ответы с готовыми решениями:

Почему монитор обрезает форму?
Люди объясните, пожалуйста, темному, как так получается, что на работе у меня форму можно растянуть (разметить) до 12000 твипов, взял на...

Почему метод Parse обрезает ведущие нули?
Считываю из файла даты в формате day/month/year, все хорошо, но когда доходит до чисел как &quot;01&quot;, то нули отбрасываются на...

обрезает файл
файл 103 кб. его расширение &quot;.1603&quot;(фиг знает где я его нашел). после записи он весит всего 8кб обрабатываю этим void...

2
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
23.03.2017, 17:13
Lydovik,
Ибо int/int=int, т.е. 100/3 = 33, 10/2=4, 1/2=0. Т.е. деление целочисленных операндов дает целый результат равный целой части от деления.
Нужно:
C#
1
discount = (Sum / 100.0) * 3;
или
C#
1
discount = ((double)Sum / 100) * 3;
И исправьте тип discount на double.
1
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
23.03.2017, 17:37
Lydovik,
Цитата Сообщение от Даценд Посмотреть сообщение
И исправьте тип discount на double
а лучше Decimal
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2017, 17:37
Помогаю со студенческими работами здесь

TDateTime обрезает 00:00:00
Здравствуйте Есть txt-файл с точками времени: 2018.04.09 00:00:00.120 2018.04.09 00:00:01.289 2018.04.09 00:00:02.845 и т. д. ...

Обрезает слова!!!!
обрезает на главной сайта http://carpmaster.by ПОЙМАЛ-ОТПУСТИЛ,как сделать чтобы не обрезало???

Windows 8,7 обрезает окна
Не подскажете, от чего это вообще? Обрезает окна на вин 7, 8. На вин ХР такой проблемы нет, и все отображает нормально. Причем не...

Tomcat обрезает страницы
Народ, здравствуйте, ниид хелп! Проблема в следующем, страницы выводятся не полностью, а только определенное количество символов, при том...

ListView обрезает текст
собрал простенький парсер но при выводе текста почему-то выводит не весь текст на эмуляторе в логах же этот же текст показывается весь ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru