私がしたいことはそれほど難しくないと思うが、私はそれを私自身で理解していない。Cコードで整数のみの数式でビットレートを計算するには?
floatまたはdoubleを使用せずに、C言語コードでミリ秒単位でバイト数を計算したいとします。
たとえば、整数だけを使用すると、過去1300msに123000バイトが入った場合、1秒あたりのバイト数はどのように計算できますか?
おかげ
私がしたいことはそれほど難しくないと思うが、私はそれを私自身で理解していない。Cコードで整数のみの数式でビットレートを計算するには?
floatまたはdoubleを使用せずに、C言語コードでミリ秒単位でバイト数を計算したいとします。
たとえば、整数だけを使用すると、過去1300msに123000バイトが入った場合、1秒あたりのバイト数はどのように計算できますか?
おかげ
は、私はあなたが32ビットシステムを使用していて、intは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;
}
ありがとうございました。私はそれがかなり簡単だと思ったが、どういうわけか私はそれを考えていなかった。 :) – Tom
バイト*(1,000 MS /秒)/ MS – dbush
'bytes_per_second =(bytes_counted * 1000)/ duration_in_milliseconds'。括弧内の部分が、中間結果を保持するのに十分な大きさの整数型を使用して計算されていることを確認してください。私は 'unsigned long'を使っています。 –
整数を使用している場合は、丸めの問題が重要になります。浮動小数点数では、丸めが通常あなたのために選択されます(丸めも普通です)。 –