целочисленное деление, округление - PullRequest
0 голосов
/ 03 ноября 2010

Существует целочисленная переменная, напряжение в милливольтах.

signed int voltage_mv = 134; //134mV

У меня 2-сегментный дисплей, и я хочу отображать сотые доли вольта.

Как я могу преобразовать милливольт в сотые вольт за одну операцию? Без оператора IF, без функции?

134 => 13
135 => 14

Ответы [ 2 ]

9 голосов
/ 03 ноября 2010

Как насчет простого округления:

int millivoltToDisplay (int millivolts)
{
  return (millivolts+5)/10;
}

(записано как функция для ясности)

4 голосов
/ 03 ноября 2010

Для той же полноты, если знаменатель нечетный, то вместо выполнения:

return (милливольт + знаменатель / 2) / знаменатель;

вы можете просто иметь

возврат (2 * милливольт + знаменатель) / (2 * знаменатель);

и получение правильного округления.

...