Frage

Ich habe ein Array, und ich mag, dass sie in Seite teilen nach vorgegebener Seitengröße.

Dies ist, wie ich tun:

private int CalcPagesCount()
{
    int  totalPage = imagesFound.Length / PageSize;

    // add the last page, ugly
    if (imagesFound.Length % PageSize != 0) totalPage++;
    return totalPage;
}

Ich fühle die Berechnung ist nicht die einfachste (ich arm bin in Mathe), können Sie eine einfachere Berechnungsformel geben?

War es hilfreich?

Lösung

Kraft es abzurunden:

totalPage = (imagesFound.Length + PageSize - 1) / PageSize;

oder benutzen Gleitkommamathematik:

totalPage = (int) Math.Ceiling((double) imagesFound.Length / PageSize);

Andere Tipps

Eigentlich sind Sie in der Nähe der besten Sie tun können. Über das einzige, was ich daran denken kann, könnte „besser“ sein ist so etwas wie folgt aus:

totalPage = (imagesFound.Length + PageSize - 1) / PageSize;

Und der einzige Grund, dass dies besser ist, dass Sie die if-Anweisung zu vermeiden.

Hinweis: Sie werden immer mindestens 1 Seite, sogar für 0 Zählung erhalten, wenn die Seitengröße> 1 ist, das ist, was ich brauchte, aber kann nicht sein, was Sie brauchen. Eine Seitengröße von 1 (albern, aber technisch gültig) und einer Anzahl von 0 würde Null-Seiten sein. Je nach Bedarf sollten Sie für einen Nullwert für Zähl Seitengröße von 1

prüfen
int pages = ((count - 1) / PAGESIZE) + 1;

Das OP enthält eine gültige Antwort. Wenn ich auf wollte deaktivieren Paging dann könnte ich PageSize = int.MaxValue gesetzt.

Mehrere Antworten hier in dem PageSize (imagesFound.Length + PageSize) und das würde einen Überlauf verursachen. Die dann führt zu einem falschen Ergebnis.

Dies ist der Code, den ich verwenden werde:

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;

Zur Vermeidung von Fehlern bei Seite, die die beste Art und Weise der Nummerierung I noOfPages ist die Berechnung, indem Sie die folgende Zeile denken

totalPage = Math.Ceiling(imagesFound.Length / PageSize);

Das sollten Sie nicht geben Seite 2, wenn Pagesize == imagesFound.Length

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top