Question

J'ai un menu de marques de produits que je souhaite répartir sur 4 colonnes. Donc, si j'ai 39 marques, je souhaite que le nombre maximal d'éléments pour chaque colonne soit égal à 10 (avec un seul espace dans la dernière colonne. Voici comment je calcule le nombre d'éléments pour une colonne (à l'aide de C #):

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

Toute cette conversion me semble vraiment moche. Existe-t-il un meilleur moyen de faire des maths sur des entiers en C #?

Était-ce utile?

La solution

Vous pouvez lancer:

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

De plus, parce que int / décimal donne un décimal , vous pouvez supprimer l'un des conversions:

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

Autres conseils

Pourquoi utilisez-vous même une décimale?

int ItemCount = (BrandCount+3)/4;

Le +3 permet d’arrondir plutôt que de descendre:

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

En général:

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

Une alternative plus longue avec Mod.

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

Essayez peut-être quelque chose comme ça ... En supposant que BrandCount est un entier. Vous avez toujours les mêmes distributions, mais cela pourrait être plus clair:

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

Je ne suis pas un grand fan de la classe Convert et je l'évite autant que possible. Cela semble toujours rendre mon code illisible.

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