質問

配列があり、事前に設定されたページサイズに従ってページに分割したい。

これは私が行う方法です:

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が表示されないはずです

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top