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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top