Frage

Ich habe ein Menü der Produktmarken, die ich mehr als 4 Spalten teilen möchten. Also, wenn ich 39 Marken habe, dann mag ich die maximale Elementanzahl für jede Spalte 10 zu sein (mit einer einzigen Lücke in der letzten Spalte Hier ist, wie ich die Berechnung der Artikel für eine Spalte zählen (C #).

int ItemCount = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(BrandCount) / 4m));

Alle Umwandlung scheint mir wirklich hässlich. Gibt es einen besseren Weg, Mathe auf ganze Zahlen in C # zu tun?

War es hilfreich?

Lösung

Sie können die Stimmen:

int ItemCount = (int) Math.Ceiling( (decimal)BrandCount / 4m );

Auch, weil int / decimal Ergebnisse in einem decimal Sie eines der Abgüsse entfernen:

int ItemCount = (int) Math.Ceiling( BrandCount / 4m );

Andere Tipps

Warum verwenden Sie auch eine Dezimalzahl?

int ItemCount = (BrandCount+3)/4;

Die +3 stellt sicher, dass Sie aufrunden, anstatt nach unten:

(37+3)/4 == 40/4 == 10
(38+3)/4 == 41/4 == 10
(39+3)/4 == 42/4 == 10
(40+3)/4 == 43/4 == 10

Generell gilt:

public uint DivUp(uint num, uint denom)
{
    return (num + denom - 1) / denom;
}

Eine längere Alternative mit Mod.

ItemCount = BrandCount / 4;
if (BrandCount%4 > 0) ItemCount++;

Vielleicht so etwas wie dies versuchen ... BrandCount Unter der Annahme, eine ganze Zahl. Sie immer noch die gleichen Abgüsse haben, aber es könnte klarer sein:

int ItemCount = (int)(Math.Ceiling(BrandCount / 4m));

Ich bin kein großer Fan der Convert Klasse, und ich es vermeiden, wann immer möglich. Es scheint immer zu meinen Code unleserlich zu machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top