9

4列に分割したい商品ブランドのメニューがあります。したがって、39のブランドがある場合、各列の最大アイテム数を10にします(最後の列に1つのギャップがあります。C#を使用して列のアイテム数を計算する方法は次のとおりです)。

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

そのすべての変換は私には本当に醜いようです。C#で整数を計算するためのより良い方法はありますか?

4

4 に答える 4

21

あなたはキャストすることができます:

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

また、int/decimalの結果が aになるためdecimal、キャストの 1 つを削除できます。

int ItemCount = (int) Math.Ceiling( BrandCount / 4m );
于 2008-10-30T13:39:46.127 に答える
11

なぜ小数を使っているのですか?

int ItemCount = (BrandCount+3)/4;

これ+3により、切り捨てではなく切り上げが行われます。

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

一般に:

public uint DivUp(uint num, uint denom)
{
    return (num + denom - 1) / denom;
}
于 2008-10-30T14:02:53.133 に答える
7

Mod を使用したより長い代替手段。

ItemCount = BrandCount / 4;
if (BrandCount%4 > 0) ItemCount++;
于 2008-10-30T13:39:45.550 に答える
2

おそらく、このようなことを試してみてください...BrandCountが整数であると仮定します。あなたはまだ同じキャストを持っていますが、より明確になるかもしれません:

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

私はこのConvertクラスの大ファンではないので、できる限り避けています。私のコードは常に判読不能になっているようです。

于 2008-10-30T13:41:35.470 に答える