mmbguide
یک شنبه 30 مرداد 1401, 13:43 عصر
سلام دوستان
من یک 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();
}
مشکلات
در هر حالی از فرمت بندی مقدار دو رقم اعشار بعد از عدد صحیح همیشه 0 هستش.
در آخرین بخش از تبدیلات، نتیجه تقسیم هرگز در متغیر ذخیره نمیشه و 0 هستش در صورتی که در خطی که مستقیم return انجام شده مقدار fileSize مقدار داره. در کل متغیر های a همیشه 0 هستد و اصلا مقدار ندارند و دلیلش را هم نمیدونم.
ممنون اگر راهنمایی کنید.
من یک 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();
}
مشکلات
در هر حالی از فرمت بندی مقدار دو رقم اعشار بعد از عدد صحیح همیشه 0 هستش.
در آخرین بخش از تبدیلات، نتیجه تقسیم هرگز در متغیر ذخیره نمیشه و 0 هستش در صورتی که در خطی که مستقیم return انجام شده مقدار fileSize مقدار داره. در کل متغیر های a همیشه 0 هستد و اصلا مقدار ندارند و دلیلش را هم نمیدونم.
ممنون اگر راهنمایی کنید.