Этот урок посвящен доработке программы-калькулятора, включающей реализацию оставшихся кнопок.
Очистка калькулятора (Button AC)
Реализуем четыре кнопки: очистку, изменение знака, вычисление процентов и добавление десятичной точки. Начнём с очистки.
- Переименование кнопки: Изменим имя кнопки на Button AC.
- Обработчик события: Создадим обработчик события для кнопки.
- Сброс значений: В обработчике события:
- Установим текст лейбла в «0».
- Вернём цвет текста лейбла в белый (ранее изменялся при делении на ноль).
- Сбросим значение переменной First в 0.
- Сбросим значение переменной UserAction в пробел и плюс.
- Сбросим значение переменной isEquel в false.
Изменение знака числа (+/-)
- Переименование кнопки: Изменим имя кнопки на Button +/-.
- Обработчик события: Создадим обработчик события.
- Умножение на -1: В обработчике события:
- Получим число из текстового поля.
- Умножим его на -1, используя операцию *= -1.
- Преобразуем результат обратно в строку и установим его в текстовое поле.
Вычисление процентов (%)
- Переименование кнопки: Изменим имя кнопки на Button %.
- Обработчик события: Создадим обработчик события.
- Логика вычисления: При нажатии кнопки:
- Запомним действие пользователя (MassAction) как вычисление процентов.
- Установим текст лейбла в «0».
- Вызовем функцию MassAction с символом «%».
- В функции MassAction, при обработке символа «%», выполним вычисление: первое число * второе число / 100. Необходимо учитывать, что использование типа данных integer может приводить к потере точности при работе с дробными числами.
Добавление десятичной точки (Button .)
- Переименование кнопки: Изменим имя кнопки на Button ..
- Обработчик события: Создадим обработчик события.
- Добавление точки: В обработчике события:
- Создадим строковую переменную text для хранения текста из лейбла.
- Проверим наличие точки в строке text с помощью метода Contains(".").
- Если точка отсутствует, добавим её к строке text и обновим текст лейбла.
Корректировка обработки данных
В связи с добавлением поддержки чисел с плавающей точкой, необходимо внести следующие изменения:
- Изменим тип переменной First на float (или double для большей точности).
- В функции MassAction заменим конвертацию ToInt32 на ToDouble (или ToSingle).
- В обработчике кнопки +/- также заменим конвертацию на ToDouble (или ToSingle).
- Для корректной обработки десятичных чисел, необходимо использовать запятую в качестве десятичного разделителя при вводе и конвертации данных.
После внесенных изменений калькулятор корректно обрабатывает целые и дробные числа.