1.7 整数除算で端数切り上げ(商のみ)

浮動小数点数の小数部を切り上げる関数としては ceil がありますが、次のテンプレートはその整数版です。整数同士の除算 (dividend ≥ 0, divisor > 0) において、小数部分を切り上げた商を返します。

template<class T>
T ceil(T dividend, T divisor)
{
  return (dividend + (divisor - 1)) / divisor;
}

また、以下はその整数定数版です。

template<long L, long R>
struct iceil
{
  static const long value = (L + (R - 1)) / R;
};

使用例:

cout << ceil(3, 2) << endl;
cout << iceil<3, 2>::value << endl;

※ std:: は省略しています。


元ネタ
このエントリーを含むはてなブックマーク