配列があり、事前に設定されたページサイズに従ってページに分割したい。
これは私がする方法です:
private int CalcPagesCount()
{
int totalPage = imagesFound.Length / PageSize;
// add the last page, ugly
if (imagesFound.Length % PageSize != 0) totalPage++;
return totalPage;
}
私は計算が最も単純ではないと感じています(私は数学が苦手です)、より簡単な計算式を1つ与えることができますか?
強制的に切り上げる:
totalPage = (imagesFound.Length + PageSize - 1) / PageSize;
または、浮動小数点演算を使用します。
totalPage = (int) Math.Ceiling((double) imagesFound.Length / PageSize);
実際、あなたはできる限りの最高に近づいています。私が考えることができる唯一のことは、「より良い」かもしれないということです。
totalPage = (imagesFound.Length + PageSize - 1) / PageSize;
そして、これがより良い唯一の理由は、ifステートメントを避けることです。
注:ページサイズが> 1の場合、0カウントであっても、少なくとも1ページは常に取得されます。ページサイズ1(愚かではあるが技術的に有効)およびカウント0は、ゼロページになります。必要に応じて、カウントとページサイズが1のゼロ値を確認することもできます。
int pages = ((count - 1) / PAGESIZE) + 1;
OPには有効な回答が含まれています。 オフにするページングが必要な場合は、PageSize = int.MaxValue
。
ここでいくつかの答えがPageSize
(imagesFound.Length + PageSize
)そして、それはオーバーフローを引き起こすでしょう。それは間違った結果につながります。
これは私が使用するコードです:
int imageCount = imagesFound.Length;
// include this if when you always want at least 1 page
if (imageCount == 0)
{
return 1;
}
return imageCount % PageSize != 0
? imageCount / PageSize + 1
: imageCount / PageSize;