La formule la plus simple pour calculer le nombre de pages?
-
05-07-2019 - |
Question
J'ai un tableau et je souhaite les diviser en pages en fonction du format de page prédéfini.
Voici comment je fais:
private int CalcPagesCount()
{
int totalPage = imagesFound.Length / PageSize;
// add the last page, ugly
if (imagesFound.Length % PageSize != 0) totalPage++;
return totalPage;
}
Je pense que le calcul n’est pas le plus simple (je suis pauvre en mathématiques), pouvez-vous donner une formule de calcul plus simple?
La solution
Forcez-le à arrondir:
totalPage = (imagesFound.Length + PageSize - 1) / PageSize;
Ou utilisez des maths en virgule flottante:
totalPage = (int) Math.Ceiling((double) imagesFound.Length / PageSize);
Autres conseils
En fait, vous êtes proche de ce que vous pouvez faire. À propos de la seule chose que je peux penser qui pourrait être "mieux" est quelque chose comme ça:
totalPage = (imagesFound.Length + PageSize - 1) / PageSize;
Et la seule raison pour laquelle c’est mieux, c’est que vous évitez la déclaration if.
REMARQUE: vous obtiendrez toujours au moins 1 page, même pour un nombre égal à 0, si la taille de la page est > 1, qui est ce dont j'avais besoin mais peut ne pas être ce dont vous avez besoin. Une taille de page de 1 (stupide mais techniquement valide) et un nombre de 0 serait zéro pages. En fonction de vos besoins, vous souhaiterez peut-être vérifier la valeur zéro pour count & amp; taille de page de 1
int pages = ((count - 1) / PAGESIZE) + 1;
Le PO contient une réponse valide. Si je voulais désactiver la pagination, je pouvais définir PageSize = int.MaxValue
.
Plusieurs réponses ajoutent à PageSize
( imagesFound.Length + PageSize
), ce qui provoquerait un débordement. Ce qui conduit ensuite à un résultat incorrect.
C'est le code que je vais utiliser:
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;
Pour éviter les erreurs de numérotation des pages, la meilleure façon de calculer noOfPages est de procéder comme suit
totalPage = Math.Ceiling(imagesFound.Length / PageSize);
Cela ne devrait pas vous donner la page 2 lorsque PageSize == imagesFound.Length