سؤال

لدي صفيف وأريد تقسيمها إلى صفحة وفقًا لحجم الصفحة المحددة مسبقًا.

هكذا أفعل:

private int CalcPagesCount()
{
    int  totalPage = imagesFound.Length / PageSize;

    // add the last page, ugly
    if (imagesFound.Length % PageSize != 0) totalPage++;
    return totalPage;
}

أشعر أن الحساب ليس هو أبسط (أنا فقير في الرياضيات) ، هل يمكنك إعطاء صيغة حساب أبسط واحدة؟

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

المحلول

إجباره على التقريب:

totalPage = (imagesFound.Length + PageSize - 1) / PageSize;

أو استخدم الرياضيات العائمة:

totalPage = (int) Math.Ceiling((double) imagesFound.Length / PageSize);

نصائح أخرى

في الواقع ، أنت قريب من أفضل ما يمكنك القيام به. حول الشيء الوحيد الذي يمكنني التفكير فيه قد يكون "أفضل" هو شيء من هذا القبيل:

totalPage = (imagesFound.Length + PageSize - 1) / PageSize;

والسبب الوحيد الذي يجعل هذا أفضل هو أن تجنب البيان if.

ملاحظة: ستحصل دائمًا على صفحة واحدة على الأقل ، حتى بالنسبة لعدد 0 ، إذا كان حجم الصفحة> 1 ، وهو ما أحتاجه ولكن قد لا يكون ما تحتاجه. سيكون حجم صفحة 1 (سخيف ولكن صالح تقنيًا) وعدد 0 صفحات صفر. اعتمادًا على احتياجاتك ، قد ترغب في التحقق من قيمة صفر للعد وحجم الصفحة 1

int pages = ((count - 1) / PAGESIZE) + 1;

يحتوي OP على إجابة صالحة. إذا أردت أن اطفئه الترحيل ثم يمكنني ضبط PageSize = int.MaxValue.

عدة إجابات هنا أضف إلى PageSize (imagesFound.Length + PageSize) وهذا من شأنه أن يسبب في تدفق. مما يؤدي بعد ذلك إلى نتيجة غير صحيحة.

هذا هو الرمز الذي سأستخدمه:

int imageCount = imagesFound.Length;

// include this if when you always want at least 1 page 
if (imageCount == 0)
{
    return 1;
}

return imageCount % PageSize != 0 
    ? imageCount / PageSize + 1 
    : imageCount / PageSize;

لتجنب وجود أخطاء في ترقيم الصفحة بأفضل طريقة يمكنني التفكير في حساب صفحات NOOF

totalPage = Math.Ceiling(imagesFound.Length / PageSize);

هذا لا ينبغي أن يعطيك الصفحة 2 عندما pagesize == picturesfound.length

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