/ (division)

Оператор / делит два числа и возвращает результат, тип которого зависит от операндов: целые дают целое, а для дроби нужен хотя бы один float.

Полная статья

Описание

Оператор / — это деление, одна из четырёх базовых арифметических операций. Он принимает два операнда — делимое и делитель — и вычисляет их частное. Тип результата определяется типами операндов, что важно учитывать при работе с дробными числами.

Синтаксис

result = numerator / denominator;

Параметры

  • result: переменная, в которую записывается результат деления. Допустимые типы: int, float, double, byte, short, long.
  • numerator: делимое — переменная или константа. Допустимые типы: int, float, double, byte, short, long.
  • denominator: делитель — переменная или константа, не равная нулю. Допустимые типы: int, float, double, byte, short, long.

Пример кода

    int a = 50;
    int b = 10;
    int c = 0;
    c = a / b;  // переменная 'c' получает значение 5 после выполнения этого оператора

Как читать результат

Тип результата деления определяется типами операндов, а не типом переменной, в которую он записывается:

  • Если оба операнда — целые числа (int, long, byte и т. д.), выполняется целочисленное деление: дробная часть отбрасывается без округления. Например, 7 / 2 даст 3, а не 3.5.
  • Если хотя бы один из операндов имеет тип float или double, вычисление выполняется с плавающей запятой и результат будет дробным.
  • Если результат с плавающей запятой записывается в целочисленную переменную (int, long и т. д.), дробная часть молча отбрасывается. Это не ошибка компилятора, но частый источник неожиданных значений.

Чтобы получить дробный результат от деления двух целых чисел, достаточно явно привести один из операндов к float: (float)numerator / denominator.

Примечания и предупреждения

  1. Деление на ноль — грубая ошибка. На микроконтроллерах Arduino это обычно приводит к непредсказуемому поведению или зависанию. Всегда проверяйте делитель перед операцией, если он вычисляется динамически.
  2. Целочисленное деление отбрасывает остаток, а не округляет. Если нужен остаток, используйте оператор % (остаток от деления).
  3. Смешанные типы: если один операнд float, а другой int, компилятор автоматически приведёт int к float перед вычислением — это ожидаемое поведение.
  4. Точность float: тип float на AVR-платах (Uno, Nano, Mega) имеет точность около 6–7 значащих цифр. Для критичных вычислений это может быть недостаточно.

Где применяется

  • Масштабирование показаний сенсоров: например, перевод сырого значения АЦП в реальную величину (напряжение, температуру).
  • Усреднение: деление суммы накопленных значений на их количество для вычисления среднего.
  • Таймеры и частоты: вычисление периода из частоты или разбивка интервала на равные части.
  • Отображение на дисплее: пересчёт пикселей, позиций или диапазонов под размер экрана.
    float a = 55.5;
    float b = 6.6;
    int c = 0;
    c = a / b;  // переменная 'c' хранит значение 8, а не ожидаемый результат 8.409

Полезные материалы