Целочисленное деление ардуино

Я хочу разделить два целых числа и получить, как часто одно из них полностью вписывается в другое, так что на выходе всегда будет целое число. В python вы выполняете такого рода операции с помощью //.

, 👍0

Обсуждение

Итак ... просто чистое целочисленное деление (деление без остатка за десятичной запятой)? Это просто оператор деления / с целыми числами. Например, 13/4 даст вам 3 (поскольку оба операнта являются целыми числами, поэтому часть за десятичной запятой игнорируется). Ты это имеешь в виду?, @chrisl

приведите числитель и знаменатель к целым числам соответствующего типа и используйте деление: (int) num / (int) den выдает результат int (2-байтовый знак в arduino). возможно, вы захотите использовать stdint.h (он же cstdint) типы, такие как int16_t, которые делают типы понятными независимо от компилятора (в некоторых местах int имеет 4-байтовый знак) вы можете обнаружить, что приведение к математическим операциям полезно и в других сценариях. например, иногда вы хотите обработать ролловер целых чисел (255 + 1 будут преобразованы в 0, если они состоят из 1 байта без знака)., @Abel


1 ответ


4

В C ++ оператор целочисленного деления равен /, а деление с плавающей запятой также равно /. Компилятор выбирает в соответствии с типами операндов:

  • если один или оба операнда являются числами с плавающей запятой, вы получаете деление с плавающей запятой

  • если оба операнда имеют некоторый целочисленный тип, вы получаете целочисленное деление.

Таким образом:

  • 5.0/2.0, 5.0/2, 5/2.0 все они имеют одинаковое значение, а именно 2.5

  • 5/2 - это 2.

,