2016-11-25 1 views
0

Бьюсь об заклад, что я хочу сделать, это не так сложно, но я не понимаю это самостоятельно.Как рассчитать битрейт с целочисленным только математическим в C-коде?

Я хочу рассчитать байт в секунду в течение нескольких миллисекунд в коде языка C без использования float или double.

Например, используя только целые числа, как я могу вычислить байты в секунду, если в последние 1300 мсек поступило 123000 байт?

Благодаря

+0

байт * (1000 мс/с)/мс – dbush

+0

'bytes_per_second = (bytes_counted * 1000)/duration_in_milliseconds'; просто убедитесь, что часть в круглых скобках вычисляется с использованием целочисленного типа, который достаточно велик, чтобы удерживать промежуточный результат. Я бы сам использовал «unsigned long». –

+0

Вопрос о округлении становится важным, если вы используете целые числа. С числами с плавающей запятой округление обычно выбирается для вас (круглый и даже общий). –

ответ

0

Я предполагаю, что вы используете 32-разрядную систему и ИНТ 32 битный тип данных. Также рассмотрите округление для целочисленных данных типа

Вот код для справки.

int main() 
{ 
    int bytes_count = 123000; /* total bytes captured */ 
    int time_in_ms = 1300; /* capture end time - start time */ 

    int byte_rate_per_second = (bytes_count * 1000)/ time_in_ms; /* It will round-off as it's integer type*/ 
    int roundoff = ((bytes_count % time_in_ms) * 10)/time_in_ms; /*gives roundoff in one point precision. Use recursion for more precision*/ 
    return 0; 
} 
+0

Большое спасибо. Я подумал, что это было довольно легко, но почему-то я не придумал. :) – Tom