6 Stimmen

C#: Paginierung, Math.Ceiling

Ich erstelle gerade eine Paginierung und habe ein Problem.

Wenn ich eine Zahl 12 habe und diese durch 5 teilen möchte (5 ist die Anzahl der Ergebnisse, die ich auf einer Seite haben möchte), wie würde ich sie dann richtig aufrunden? Das funktioniert nicht:

int total = 12;
int pages = Math.Ceiling(12 / 5);
//pages = 2.4... but I need it to be 3

15voto

Tomas Jansson Punkte 21651

Auch wenn Ihr Code funktionieren sollte, Math.Round falsch ist, können Sie dies versuchen:

int pages = (total + pageSize - 1)/pageSize;

Das sollte dasselbe sein wie Math.Ceiling außer, dass Sie immer mit int und nicht double an jedem beliebigen Punkt als Math.Ceiling zurück.

EDITAR: Um Ihren Code zum Laufen zu bringen, könnten Sie es versuchen:

int pages = (int)Math.Ceiling((double)12/(double)5);

Aber Sie sollten das erste Beispiel verwenden.

6voto

Chad Punkte 3000

Könnten Sie tun:

int numPages = Math.Ceiling((decimal)12 / (decimal)5);

または

int numPages = (12 + 4) / 5;  //(total + (perPage - 1)) / perPage

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X