質問
配列があり、事前に設定されたページサイズに従ってページに分割したい。
これは私が行う方法です:
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ステートメントを避けることです。
注:ページサイズが>の場合、0カウントであっても常に少なくとも1ページが取得されます。 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;
ページ番号付けでエラーが発生しないようにするために、noOfPagesを計算する最良の方法は、次の行を実行することです
totalPage = Math.Ceiling(imagesFound.Length / PageSize);
PageSize == imagesFound.Lengthの場合、ページ2が表示されないはずです
所属していません StackOverflow