Die einfachste Formel Seitenanzahl zu berechnen?
-
05-07-2019 - |
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?
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üfenint 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