نمایش نتایج 1 تا 5 از 5

نام تاپیک: کار با مقادیر long

  1. #1
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,172

    کار با مقادیر long

    سلام دوستان

    من یک Extension Method دارم که مقادیر long رو با فرمت مورد نظر برمیگردونه. مقادیر Size فایل هستش که میخوام با واحدها مختلف نمایش بدم:

            public static string ShowInStringFormat(this long fileSize, bool addUnit = false)
    {
    //file size less than 999 byte in B
    if (fileSize < 1024)
    return fileSize.ToString("n0") + (addUnit == true ? " B" : string.Empty);


    //file size between 999 and 102400 byte in KB
    if (fileSize >= 1024 & fileSize < 102400)
    return (fileSize / 1024).ToString("n2") + (addUnit == true ? " KB" : string.Empty);


    //file size more than 120400 byte in MB
    if (fileSize >= 102400)
    {
    long a0 = (fileSize / 1048576);
    string a1 = (fileSize / 1048576).ToString();
    long a2 = long.Parse(a1);
    var a3 = a2.ToString("n2");


    return (fileSize / 1024 / 1024).ToString("n2") + (addUnit == true ? " MB" : string.Empty);
    }


    return fileSize.ToString();
    }



    مشکلات
    1. در هر حالی از فرمت بندی مقدار دو رقم اعشار بعد از عدد صحیح همیشه 0 هستش.
    2. در آخرین بخش از تبدیلات، نتیجه تقسیم هرگز در متغیر ذخیره نمیشه و 0 هستش در صورتی که در خطی که مستقیم return انجام شده مقدار fileSize مقدار داره. در کل متغیر های a همیشه 0 هستد و اصلا مقدار ندارند و دلیلش را هم نمیدونم.


    ممنون اگر راهنمایی کنید.

  2. #2
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: کار با مقادیر long

    سلام و روز خوش

    در هر حالی از فرمت بندی مقدار دو رقم اعشار بعد از عدد صحیح همیشه 0 هستش.
    چون fileSize و 1024 هر دو صحیح هستن، نتیجه هم بصورت صحیح برمیگرده.
    بجای 1024 بنویسین 1024.0 تا نتیجه بصورت float (در واقع double) برگرده و اعشار داشته باشین:
     //file size between 999 and 102400 byte in KB[/VB][VB]
    if (fileSize >= 1024 & fileSize < 102400)
    return (fileSize / 1024.0).ToString("n2") + (addUnit == true ? " KB" : string.Empty);

  3. #3
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: کار با مقادیر long

    در آخرین بخش از تبدیلات، نتیجه تقسیم هرگز در متغیر ذخیره نمیشه و 0 هستش در صورتی که در خطی که مستقیم return انجام شده مقدار fileSize مقدار داره. در کل متغیر های a همیشه 0 هستد و اصلا مقدار ندارند و دلیلش را هم نمیدونم.
    همون داستان اینجا هم هست،
    و البته مقادیری از fileSize میتونه کمتر از 1048576 باشه و نتیجه کمتر از 1 هست و اینجوری a0 مقدارش صفر میشه.
    پس هم مقدار ثابت رو بجای صحیح، اعشاری کنین و هم a2 رو double تعریف کنین.

  4. #4
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,172

    نقل قول: کار با مقادیر long

    سلام. ممنون مشکلم حل شد.

    فقط سوالم این هستش که اگر متغیر نهایی اعشارپذیر نباشه مگر narrowing انجام نمیشه؟ چون به غیر از اعشار، مقدار صحیح هم در متغیر ذخیره نمیشد.

  5. #5
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: کار با مقادیر long

    سلام دوباره
    اون مقادیر حتما کمتر از 0 بوده، if رو چک کنین!
    و البته مقادیری از fileSize میتونه کمتر از 1048576 باشه و نتیجه کمتر از 1 هست و اینجوری a0 مقدارش صفر میشه.

تاپیک های مشابه

  1. تبدیل ستون نوع string با مقادیر long به نوع long در IQuryable
    نوشته شده توسط OmMiD_MtWo در بخش C#‎‎
    پاسخ: 10
    آخرین پست: شنبه 30 مرداد 1395, 16:59 عصر
  2. تفائت long با Long د جاوا
    نوشته شده توسط keyhan.taktaz در بخش Android Studio
    پاسخ: 1
    آخرین پست: دوشنبه 27 مرداد 1393, 21:38 عصر
  3. [مبتدی] تفاوت long با Long
    نوشته شده توسط hamyd_reza در بخش برنامه‌نویسی جاوا
    پاسخ: 7
    آخرین پست: سه شنبه 01 مرداد 1392, 19:01 عصر
  4. سوال: تفاوت long long با long
    نوشته شده توسط naserbagheri در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: چهارشنبه 26 تیر 1392, 17:58 عصر
  5. تبدیل آرایه long? به long
    نوشته شده توسط alireza_raj در بخش C#‎‎
    پاسخ: 5
    آخرین پست: دوشنبه 24 مهر 1391, 12:15 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •