8
votes

Déterminez le nombre de pages à partir de valeurs totales et de pesage

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:

a.) TOTAL Records b.) Records par page.

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.

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.

Merci.


0 commentaires

4 Réponses :


22
votes
public int countPages(int totalRecords, int recordsPerPage) {
  if (totalRecords == 0) { return 1; }
  return ((totalRecords-1) / recordsPerPage)+1;
}

2 commentaires

si (totalRecords <= RecordackPage) {retour 1; }


Pas besoin de tester pour le cas où totalRecords == 0 car -1 divisé par RecordsPerpage est arrondi sur 0 0 Tant que RecordsPerpage est supérieur à 1 , qui est généralement le cas.



-1
votes
int totalPages = (int)Math.Ceiling((double)totalRecords/recordsPerPage);

1 commentaires

Je peux simplement imaginer l'ordinateur décider que 50/25 = 2.0000000000096 ou un tel non-sens.



0
votes
int pages = 1 + (totalRecords + 1) / (recordsPerPage + 1)

1 commentaires

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.



0
votes

problème avec cette approche: xxx

si totalRecords est 1 résultat en division par 0. Besoin d'une déclaration supplémentaire si

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. xxx


1 commentaires

Cela n'entraîne pas une erreur de division-0. Ce ne serait possible que de RecordSperPage était 0.