سلام دوستان
من یک 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 هستد و اصلا مقدار ندارند و دلیلش را هم نمیدونم.
ممنون اگر راهنمایی کنید.