Quelle est la manière la plus élégante (en C #) de déterminer le nombre de pages de données que vous avez données: p>
a.) TOTAL Records b.) Records par page. P>
Actuellement ce que j'ai travaille, mais il utilise si / sinon pour vérifier si la valeur est que la valeur totale (1 page) ou plus, puis doit tronquer le décimal, effectuer une opération de mod et ajouter 1 de plus si Il y avait une décimale traînante. P>
Je suis sûr qu'il y a une fonction mathématique qui fait beaucoup de cela pour moi et n'est pas aussi laide. P>
Merci. P>
4 Réponses :
public int countPages(int totalRecords, int recordsPerPage) { if (totalRecords == 0) { return 1; } return ((totalRecords-1) / recordsPerPage)+1; }
si (totalRecords <= RecordackPage) {retour 1; } code>
Pas besoin de tester pour le cas où totalRecords == 0 code> car
-1 code> divisé par
RecordsPerpage code> est arrondi sur
0 code> 0 code> Tant que
RecordsPerpage code> est supérieur à
1 code>, qui est généralement le cas.
int totalPages = (int)Math.Ceiling((double)totalRecords/recordsPerPage);
Je peux simplement imaginer l'ordinateur décider que 50/25 = 2.0000000000096 ou un tel non-sens.
int pages = 1 + (totalRecords + 1) / (recordsPerPage + 1)
Cela ne fonctionne pas si la valeur totaleRecords et SooksPerPage sont identiques. Il sortira 2 au lieu du correct 1. Vous ne devriez pas en ajouter un au numérateur, juste le dénominateur.
problème avec cette approche: si totalRecords est 1 résultat en division par 0. Besoin d'une déclaration supplémentaire si P> Voici ma réécriture. .NET a tendance à utiliser -1 quand aucun résultat n'est possible sur un retour int. Alors réutilisez cette convention. P>
Cela n'entraîne pas une erreur de division-0. Ce ne serait possible que de RecordSperPage code> était 0.