سؤال

ولدي قائمة من العلامات التجارية للمنتجات التي أريد أن تقسيم أكثر من 4 أعمدة. حتى لو كان لدي 39 العلامات التجارية، ثم أريد الحد الأقصى للبند الاعتماد لكل عمود ليكون 10 (مع وجود فجوة واحدة في العمود الأخير هنا كيف انا احتساب بند الاعتماد لعمود (باستخدام C #):

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

وكل ما يبدو تحويل القبيح حقا بالنسبة لي. هل هناك طريقة أفضل للقيام الرياضيات على الأعداد الصحيحة في C #؟

هل كانت مفيدة؟

المحلول

ويمكنك يلقي:

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

وأيضا، لأن النتائج int / decimal في decimal يمكنك إزالة واحدة من يلقي:

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

نصائح أخرى

لماذا أنت حتى باستخدام عشري؟

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;
}

وثمة بديل أطول مع وزارة الدفاع.

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

وربما محاولة شيء من هذا القبيل ... وإذا افترضنا BrandCount هو عدد صحيح. لا يزال لديك نفس القوالب، ولكن قد يكون أكثر وضوحا:

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

وأنا لست مروحة ضخمة من الطبقة Convert، وأنا تجنب ذلك كلما أمكن ذلك. ويبدو دائما لجعل قانون بلدي غير مقروء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top